Как можно использовать LatLng для размещения маркеров на карте Google, но не для рисования многоугольника?

Примерно неделю назад я столкнулся с проблемой: на настраиваемой карте, созданной с помощью Google, мои полигоны не отображались, а маркеры для тех же координат были в полном порядке. Несмотря на мои усилия с Google Maps API, кажется, я не могу понять, почему.

Вот ссылка на скриншот карты. Фиолетовые стрелки и цифры - мои дополнения, они показывают:

  1. google.maps.Маркер я мог разместить по краям моей «области».
  2. Артефакт, созданный кодом 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 ожидает чего-то большего, чем проекция Меркатора.

Я попытался немного подправить проекцию, но пока не получил интересных результатов.

12
задан Silver Quettier 24 January 2012 в 08:20
поделиться