Примерно неделю назад я столкнулся с проблемой: на пользовательской карте с поддержкой 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);
Если вас интересует массив массивов, все это наравне с Javascript API Карт Google.
Если вы хотите взглянуть на карту и связанные с ней скрипты, вы можете найти их здесь а>. Фрагмент кода находится в 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.
Эта проекция используется, потому что карты Minecraft могут быть практически бесконечными, и все же должны использовать gmap, который разворачивается после 360° долготы. Также связан тот факт, что внутриигровые координаты отображаются изометрическим способом, в то время как gmaps ожидает нечто большее, похожее на проекцию Меркатора.
Я попытался немного настроить проекцию, но пока не получил никаких интересных результатов.
path
в свойствах полигона, хотя на самом деле это должно бытьpaths
В противном случае было бы полезно увидеть где-нибудь живой код. Привет, Андрес - person andresf   schedule 10.01.2012Scripts/tectonicus.js
, начиная со строки 659. Редактирование основного сообщения с этим. - person Silver Quettier   schedule 13.01.2012