2013-11-12 6 views
1

Этот вопрос задает похожие строки нижеследующего вопроса. Но я задаю этот вопрос, так как этот вопрос не отвечает требованиям. Обзоркак рассчитать площадь многоугольника в картах iOS

Area of an irregular polygon using side lengths in ios

приложения

1 - перемещает пользователя на своем автомобиле с его iPhone/IPad и мы должны построить свои координаты.

2 - После того, как он заканчивает свою поездку, мы предполагаем нарисовать многоугольник, охватывающий все его координаты

3 - Вычислить область покрытия полигона.

Я назвал API карт и не смог найти методы, которые вычисляют область.

Есть ли третья сторона библиотека/механизм, который поможет мне в вычислении площади многоугольника в картах IOS ..

+0

Эта ссылка может помочь кому-то http://stackoverflow.com/a/36090029/3918500 –

+0

Если кому-то еще это нужно, это сработало для меня -> http://stackoverflow.com/questions/29513966/calculate-area-of-mkpolygon-in-an-mkmapview – Cleversou

ответ

1

С Google Maps v3 API documentation, функцией геометрии является частью библиотеки, которая не нагруженной default:

Концепции в этом документе относятся к функциям, доступным только в библиотеке google.maps.geometry. Эта библиотека не загружается по умолчанию при загрузке API Javascript Maps, но должна быть явно указана с использованием параметра bootstrap для библиотек.

Для того, чтобы загрузить и использовать геометрию Funcitons в пределах вашей страницы, вам необходимо сообщить Google, что вы будете использовать библиотеку геометрии, добавив его в свой первоначальный вызов API Google с помощью включая библиотеки = геометрии:

Затем загрузите библиотеку геометрии, и ваша переменная z будет содержать объект.

Тестовая страница с рабочим кодом:

<!DOCTYPE html> 
<html> 
<head> 
    <style type="text/css"> 
     html, body, #map_canvas { 
     margin: 0; 
     padding: 0; 
     height: 100%; 
     } 
    </style> 
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?libraries=geometry&sensor=false"></script> 
<script type="text/javascript"> 
    var map; 
    function initialize() 
    { 
     var myOptions = { 
      zoom: 8, 
      center: new google.maps.LatLng(-34.397, 150.644), 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }; 
     map = new google.maps.Map(document.getElementById('map_canvas'), myOptions); 
    } 

    google.maps.event.addDomListener(window, 'load', initialize); 
    </script> 
<script> 
function test() 
{ 
var arr = new Array() 
arr.push('51.5001524,-0.1262362'); 
arr.push('52.5001524,-1.1262362'); 
arr.push('53.5001524,-2.1262362'); 
arr.push('54.5001524,-3.1262362'); 
dibuV(arr); 
} 
function dibuV(area) 
{ 
var a = new Array(); 

for(var i=0; i<area.length; i++) 
{ 
    var uno = area[i].split(","); 
    a[i] = new google.maps.LatLng(uno[0],uno[1]); 
} 

poligon = new google.maps.Polygon({ 
    paths: a, 
    strokeColor: "#22B14C", 
    strokeOpacity: 0.8, 
    strokeWeight: 2, 
    fillColor: "#22B14C", 
    fillOpacity: 0.35 
}) 

poligon.setMap(map);//until here is ok 
var z = google.maps.geometry.spherical.computeArea(myPolyline.getPath().getArray()); 
alert(z); 
} 
</script> 
</head> 
<body onload="test();"> 
    <div id="map_canvas"></div> 
</body> 
</html> 
Смежные вопросы