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