Aproximadamente hace una semana, me encontré con un problema: en un mapa personalizado con motor de google, mis polígonos no aparecían, mientras que los marcadores de las mismas coordenadas son totalmente correctos. A pesar de mis esfuerzos con la API de Google Maps, parece que no puedo encontrar el motivo.¿Cómo se puede usar un LatLng para colocar marcadores en un mapa de Google, pero no para dibujar un polígono?
Here is a link to a screenshot of the map. flechas y los números son mi púrpura Además, muestran:
- El
google.maps.Marker
pude colocar en los bordes de mi "región". - El artefacto generado por el código
google.maps.Polygon
. Es rojo como se esperaba, pero completamente fuera de lugar y extrañamente plano.
Aquí es la parte del código que se generan marcadores y polígonos:
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);
Si usted se está preguntando acerca de la matriz de matrices, es todo a la par con la Google Maps Javascript API.
Si desea ver el mapa y los scripts relacionados, puede find it here. El fragmento de código se encuentra en Scripts/tectonicus.js
, a partir de la línea 659.
[Editar] Parte de la información de depuración:
parece ser un problema de representación, no un "cálculo" uno. De consola de Firebug, en el mapa he vinculado, tanto
regionPolys[0].getPath().getArray();
y
for (i in regionCorners) {console.log(regionCorners[i].getPosition())};
volverá
P { Na=0.2, Oa=-22.5249097921875}
P { Na=-0.21702715474330336, Oa=-32.7277467}
P { Na=0.19466306397879407, Oa=-37.51230686484375}
P { Na=0.12889785332031245, Oa=-49.04594858671875}
Si estoy en lo cierto, significa que tienen las mismas coordenadas, que está a la par con el código.
[Editar2] ¡Nuevos avances!
Parece que los vectores tienen problemas de representación cuando se trata de una proyección personalizada, como la que se utiliza para mostrar este mapa isométrico de Minecraft. (Generado con Tectonicus)
Después de los últimos comentarios, estoy añadiendo al código en directo vinculado anteriormente dos nuevas matrices de depuración, debugRegionLatLngs
y debugRegionPoints
. El código anterior se actualiza para que pueda ver lo que contienen.
[Edit3] Proyección y coordina la investigación de
Crossing BicycleDude con la mía, ahora es casi seguro que se trata de la proyección a medida que destruye polígonos. De hecho, hay a possibly related bug in Google Maps' API.
Esta proyección se utiliza porque los mapas de Minecraft pueden ser virtualmente infinitos y, sin embargo, tienen que usar un gmap, que se ajusta después de una longitud de 360 °.También está relacionado el hecho de que las coordenadas del juego se representan de forma isométrica, mientras que gmaps espera algo más parecido a la proyección de Mercator.
Traté de ajustar la proyección un poco, pero no tuve resultados interesantes hasta el momento.
creo que estés utilizando 'path' en las propiedades de polígonos, cuando en realidad debería ser' paths' De lo contrario, sería útil ver el código en vivo en alguna parte. Cheers, Andres – andresf
Tengo un poco de espacio para subir una copia del mapa y el código relacionado. El enlace está en la pregunta. Si hay alguna prueba que le gustaría que ejecute, por favor pregunte. :) –
¿Puedes publicar una muestra un poco más pequeña que reproduzca esto, o al menos indicarnos el código de Google Maps en tu muestra? Me estoy perdiendo en todos los archivos de JavaScript ... – bamnet