Quiero hacer una simple búsqueda en Google Maps API v3 y obtener como resultado el mapa con un polígono de color como la imagen de abajo:Google Maps - Obtener frontera Polígono de zonas/barrio
búsqueda: Pinheiros, Sao Paulo
Quiero hacer una simple búsqueda en Google Maps API v3 y obtener como resultado el mapa con un polígono de color como la imagen de abajo:Google Maps - Obtener frontera Polígono de zonas/barrio
búsqueda: Pinheiros, Sao Paulo
la respuesta corta es: no, el API de Google Maps no proporciona esa funcionalidad.
Una forma de implementar esto es encontrar los datos espaciales (polígonos) en los que está involucrado, cargarlos en una base de datos (que idealmente admite consultas espaciales) y luego consultar la base de datos a través de AJAX para agregar la función geometría como KMLLayer en el mapa, junto con el pin correspondiente.
Puede consultar esto trabajando en un sitio web en funda.nl. Cuando selecciona una propiedad individual, también muestra un Mapa de Google en el que se dibuja un polígono alrededor del vecindario de la propiedad seleccionada.
Lo obtuve usando WikiMapia datos.
Los pasos son:
F12
o Ctrl+Shift+I
.Edit Poly
. Network
y filtrar por getPolygon
. e ir a Console
pestaña para ejecutar la función: Wikimapia.Parser.Itiles.prototype.decodePolygon("Copyed text here");
Utilizo JSON.stringify
para transformar el objeto en JSON.
Ejemplo:
JSON.stringify(Wikimapia.Parser.Itiles.prototype.decodePolygon("-619402099;-109032887;02fe8953fffe5a000ae5fe379a000fedffd250000e40ffd6050007f7ffeff2001925ffd59b001f6fffdc310012dcffed10003b82ffd9b9005514ffc4520053d2ffc807000c92fff82dfffde7000e670005070012ef0009390021bf000572001358fffc3a001a57fffa210013c1ffff940036530008610022fc000284004732fff5f0001fb1fff2960013c1fff80800594efffde7002c72000f16004b5000204600416f0013b2002292"))
El código anterior devolver este JSON (indentación en JsonFormatter):
{
"points":[
{
"lat":-10.9032887,
"lng":-61.9402099
},
{
"lat":-10.9032466,
"lng":-61.9306183
},
{
"lat":-10.8915629,
"lng":-61.9308972
},
{
"lat":-10.8903934,
"lng":-61.9313049
},
{
"lat":-10.8893188,
"lng":-61.9316697
},
{
"lat":-10.8889079,
"lng":-61.9318736
},
{
"lat":-10.8878227,
"lng":-61.9325173
},
{
"lat":-10.8869061,
"lng":-61.933322
},
{
"lat":-10.8864214,
"lng":-61.9338048
},
{
"lat":-10.8854416,
"lng":-61.9353282
},
{
"lat":-10.8839139,
"lng":-61.9375062
},
{
"lat":-10.8824811,
"lng":-61.939652
},
{
"lat":-10.8822809,
"lng":-61.9399738
},
{
"lat":-10.8826496,
"lng":-61.9399202
},
{
"lat":-10.8831343,
"lng":-61.9400489
},
{
"lat":-10.8839982,
"lng":-61.940285
},
{
"lat":-10.8844934,
"lng":-61.9404244
},
{
"lat":-10.8851677,
"lng":-61.9403279
},
{
"lat":-10.8856734,
"lng":-61.9401777
},
{
"lat":-10.8870641,
"lng":-61.940167
},
{
"lat":-10.8879597,
"lng":-61.9403815
},
{
"lat":-10.8897823,
"lng":-61.9404459
},
{
"lat":-10.8905936,
"lng":-61.9401884
},
{
"lat":-10.8910993,
"lng":-61.9398451
},
{
"lat":-10.8933855,
"lng":-61.9396412
},
{
"lat":-10.8945233,
"lng":-61.9395876
},
{
"lat":-10.8964513,
"lng":-61.9399738
},
{
"lat":-10.8981264,
"lng":-61.9408
},
{
"lat":-10.8990114,
"lng":-61.9413042
}
],
"bounds":{
"left":-61.9413042,
"bottom":-10.9032887,
"right":-61.9306183,
"top":-10.8822809,
"centerLatLng":null
}
}
Finalmente lo uso de expresiones regulares como este regexr.com/3c5m2 para convertir JSON en WKT. No copio todo JSON solo los objetos en el arreglo "points"
en Regex. En RegExr, copio el texto reemplazado y pego en POLYGON((pastehere))
.
¡Importante! Después de aplicar la expresión regular, necesita repetir el primer punto en el último punto.
-61,956523060798645 -10,877613428213532, -61,95640504360199 -10,877718788854143, -61,956791281700134 -10,878393096072424, -61,95735991001129 -10,87805594265392, -61,95682346820831 -10,877339490373695, -61,956523060798645 -10,877613428213532
Entonces usted consigue algo así como esto:
POLYGON((-61.956523060798645 -10.877613428213532,-61.95640504360199 -10.877718788854143,-61.956791281700134 -10.878393096072424,-61.95735991001129 -10.87805594265392,-61.95682346820831 -10.877339490373695,-61.956523060798645 -10.877613428213532))
que se puede insertar en la base de datos t hat es compatible con WKT (como MySQL).
WikiMapia tiene un API entonces todo este proceso puede ser automático, pero esto funciona bien para mí.
Solicitud de función para [Google Maps JavaScript API v3] (https://code.google.com/p/gmaps-api-issues/issues/detail?id=109) – geocodezip