Примерно неделю назад я столкнулся с проблемой: на настраиваемой карте, созданной с помощью Google, мои полигоны не отображались, а маркеры для тех же координат были в полном порядке. Несмотря на мои усилия с Google Maps API, кажется, я не могу понять, почему.
Вот ссылка на скриншот карты. Фиолетовые стрелки и цифры - мои дополнения, они показывают:
google.maps.Маркер
я мог разместить по краям моей «области». 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);
Если вас интересует массив массивов, все это на одном уровне с Google Maps Javascript API .
Если вы хотите взглянуть на карту и связанные сценарии, вы можете найти ее здесь .
Фрагмент кода находится в Scripts / tectonicus.js
, начиная со строки 659.
[Edit] Некоторая отладочная информация:
Кажется, это проблема рендеринга, а не "расчетная". Из консоли 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 ожидает чего-то большего, чем проекция Меркатора.
Я попытался немного подправить проекцию, но пока не получил интересных результатов.