2012-05-09 9 views

Respuesta

1

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.

+0

Solicitud de función para [Google Maps JavaScript API v3] (https://code.google.com/p/gmaps-api-issues/issues/detail?id=109) – geocodezip

0

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.

7

Lo obtuve usando WikiMapia datos.

Los pasos son:

  • abierto WikiMapia.
  • Presione F12 o Ctrl+Shift+I.

enter image description here

  • Buscar la ubicación que desee.
  • Haga clic con el botón derecho en el barrio y elija Edit Poly. enter image description here
  • En las herramientas de desarrollador, haga clic en Network y filtrar por getPolygon. enter image description here
  • respuesta del servidor de copia que se parece a: enter image description here

  • e ir a Console pestaña para ejecutar la función: Wikimapia.Parser.Itiles.prototype.decodePolygon("Copyed text here");

  • pulse ENTER para ejecutar después de esto la consola devolverá el objeto con los puntos (El camino de Poly).

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í.

Cuestiones relacionadas