Я использую Google Maps API v3 для отображения пешеходных маршрутов, используя данные, извлеченные из файлов GPX, загруженных на мой веб-сайт.
Страница состоит из двух объектов Google Maps, первый отображает все доступные маршруты ивторой покажет маршрут в виде ломаной линии в модале Bootstrap 4.
Мне удалось построить и отобразить точки GPX, и каждая точка расширяет связанный объект.
Однако, когдаЯ вызываю метод fitbounds (), он обычно работает в первый раз и правильно устанавливает масштаб и центр, любые последующие вызовы по тому же маршруту или другому маршруту приведут к неправильному масштабированию.Очень часто угол ЮЗ находится в океане, недалеко от Мексики, и угол СВ, где-то на севере России, когда все маршруты базируются в Великобритании.
mapData.RoutePins содержит объект JSON с координатами широты и долготы.
var routemap = new google.maps.Map(document.getElementById('route'), mapOptions);
var routebounds = new google.maps.LatLngBounds();
mapData.RoutePins.forEach(function (RoutePin) {
polylinedata.push({ lat: RoutePin.Latitude, lng: RoutePin.Longitude });
routebounds.extend({ lat: RoutePin.Latitude, lng: RoutePin.Longitude });
});
routemap.fitBounds(routebounds);
polyline = new google.maps.Polyline({
path: polylinedata,
geodesic: true,
strokeColor: '#FF0000',
strokeOpacity: 1.0,
strokeWeight: 2,
map: routemap
});
Чтобы попытаться найти проблему, я добавил обработчик события bounds_changed, который регистрирует необработанные объекты границ и углы NE / SW связанного объекта на консоли.
google.maps.event.addListener(routemap, 'bounds_changed', function (event) {
console.log(routemap.getBounds() + "\nNE: " + routebounds.getNorthEast() + "\nSW: " + routebounds.getSouthWest());
});
ОжидаемыйРезультатом является правильно масштабированное и центрированное окно просмотра маршрута, который я наметил, хотя то, что я на самом деле получаю на основе журнала консоли, интересно.
Map Initialized:
getBounds(): ((0, 0), (0, 0))
NE: (-1, -180)
SW: (1, 180)
After fitbounds():
getBounds(): ((15.190468336327566, -97.72890624999991), (74.04118207833291, 96.68515625000009))
NE: (53.7738, -0.44322999999997137)
SW: (53.71267, -0.6005199999999604)
Координаты getBounds представляют то, что на самом деле показано, ноКоординаты NE и SW - это то, что должно отображаться.
Что идет не так?