2013-10-02 3 views
1

Как вернуть значение latLng из заданного процента вдоль полилинии? Я провел день на этом, используя интерполяционные и отдельные узлы. Является ли их более простой функцией, которая делает работу ворчания?latLng from polyLine Процент

Google maps API v3 спасибо!

ответ

6

http://www.geocodezip.com/scripts/v3_epoly.js

написанные для API v2 Google Maps Javascript перенесенного на v3. Documentation for the v2 version

Имеет эти два метода:

  • .distance() возвращает длину поли пути
  • .GetPointAtDistance() возвращает GLatLng на заданном расстоянии
    вдоль пути.
    Расстояние указывается в метрах
    Возвращает ноль, если путь короче, чем это

Это должно работать (если вы включите этот сценарий и ваша переменная полилиния «ломаная»):

var latlng = polyline.GetPointAtDistance(polyline.Distance()*(desired percentage)/100); 

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

var polylength = polyline.Distance(); 
var latlng = polylength*(desired percentage)/100); 
+0

О, спасибо вам большое! Именно то, что мне нужно! –

+1

Он возвращает (lat, lng), но точка не обязательно на построенной PolyLine. Нужна помощь. :( – anusreemn

+0

Я пробовал это, он работает в большинстве случаев, но в каком-то примере, как маршрут из Соединенных Штатов в Австралию, вызывает некоторые проблемы. Очевидно, Google Maps рисует линию из США в Австралию через Тихий океан, но эта библиотека предполагает, что маршруты здесь тянутся через Африку. [Здесь] (http://i60.tinypic.com/znwnpf.png) является примером. Поскольку вы можете видеть, как самолет вылетел из штата Индиана, США не следуют пути, который Google Maps имеет В этом случае метод GetPointAtDistance' дает неправильный 'latlng'. –

Смежные вопросы