Примерно неделю назад я столкнулся с проблемой: на пользовательской карте с поддержкой Google мои полигоны не будут отображаться, в то время как маркеры для тех же координат полностью в порядке.Несмотря на мои усилия с Google Maps API, кажется, я не могу найти почему.
Вот ссылка на скриншот карты. Фиолетовые стрелки и цифры - это мое дополнение, они показывают:
-
google.maps.Marker
, который я мог бы разместить по краям моей "области". - Артефакт, сгенерированный кодом
google.maps.Polygon
.Он красный, как и ожидалось, но совершенно неуместен и странно плоский.
Вот часть кода, где генерируются маркеры и полигоны:
var regionData = tecMap.regions[r];
var regionMapMarkers = new google.maps.MVCArray();
for (c in regionData.coords) {
var point = projection.worldToMap(regionData.coords[c]);
debugRegionPoints.push(point);
var thisLatLng = projection.fromPointToLatLng(point);
debugRegionLatLngs.push(thisLatLng);
regionMapMarkers.push(thisLatLng);
}
regionMapMarkers.forEach(function(latLng, m){
var marker = new google.maps.Marker({
position: latLng,
map: map,
title: '',
optimized: false
});
regionCorners.push(marker);
});
var paths = new google.maps.MVCArray();
paths.push(regionMapMarkers);
var region = new google.maps.Polygon({
fillColor: "#FF0000",
fillOpacity: 0.35,
map: map,
paths: paths,
strokeColor: "#FF0000",
strokeOpacity: 0.8,
strokeWeight: 2
});
regionPolys.push(region);
Если вы 'Вам интересно узнать о массиве массивов, все это наравне с API Карт Google Javascript .
Если вы хотите взглянуть на карту и связанные сценарии, вы можете найди это здесь .Фрагмент кода находится в Scripts/tectonicus.js
, начиная со строки 659.
[Редактировать] Некоторая отладочная информация:
Кажется, это проблема рендеринга, а не "расчет "один.Из консоли Firebug, на карте, которую я связал, оба
regionPolys[0].getPath().getArray();
и
for (i in regionCorners) {console.log(regionCorners[i].getPosition())};
вернут
P { Na=0.20123958504464223, Oa=-22.5249097921875}
P { Na=-0.21702715474330336, Oa=-32.7277467}
P { Na=0.19466306397879407, Oa=-37.51230686484375}
P { Na=0.12889785332031245, Oa=-49.04594858671875}
Если я прав, это означает, что ониимеют те же координаты, что наравне с кодом.
[Edit2] Новые улучшения!
Кажется, что векторы имеют проблемы с рендерингом при работе с пользовательской проекцией, такой как та, которая используется для отображения этой изометрической карты Minecraft.(Создано с помощью Tectonicus)
После последних комментариев я добавляю в живой код, связанный над двумя новыми массивами отладки, debugRegionLatLngs
и debugRegionPoints
.Вышеуказанный код обновлен, чтобы вы могли видеть, что они содержат.
[Edit3] Проекция и координаты
Пересекая исследование BicycleDude с моим, теперь почти наверняка, что это заказпроекция, которая разрушает многоугольники.На самом деле существует возможно связанная ошибка в API Карт Google .
Эта проекция используется потому, что карты Minecraft могут быть практически бесконечными, и в то же время приходится использовать gmap, которая оборачивается вокругпосле долготы 360 °.Также связан тот факт, что игровые координаты отображаются в изометрической форме, в то время как gmaps ожидает что-то более похожее на проекцию Меркатора.
Я попытался немного изменить проекцию, но пока не дал интересных результатов.