2010-05-11 14 views
19

¿Es posible enmascarar países vecinos en GoogleMap? En mi caso, solo quiero mostrar Suecia en una vista. En una segunda vista, solo Noruega, Dinamarca, etc ...¿Puedo mostrar un solo país (enmascarado) en GoogleMaps?

Sé que es posible dibujar líneas de polígono y rellenarlas según corresponda en Maps API. El problema es que o los conjuntos de resultados se agrandan o las líneas se ponen muy difíciles, etc. ... Sería bueno que GoogleMaps pudiera enviar un país en ese momento sin vecinos.

¿Alguien sabe acerca de una buena base de datos de coordenadas con las fronteras de los países?

Respuesta

21

Puede crear polígonos muy complejos en Mapas sin una caída en el rendimiento si los almacena en formato de archivo KML y los carga como KmlLayers. KML es un formato de archivo vectorial basado en XML para datos geográficos. La belleza de usar archivos KML en Google Maps es que se representan en servidores de Google en simples archivos PNG, que coinciden con la resolución actual y el cuadro delimitador de la vista de Maps en cualquier momento, sin importar cuán complejos sean los datos originales del polígono. Entonces, toda la complejidad se maneja desde el lado del servidor en Google.

Aquí está un sample of a project, donde he usado una máscara de este tipo para uno de los estados federales de Alemania. (Los alrededores en este caso no están completamente ocultos, sino que solo se atenúan. Pero también puede enmascararlos con la misma facilidad cambiando el valor alfa del color de relleno en el archivo KML.)

Para una revisión rápida KML los archivos también se pueden cargar directamente en el sitio web público de Google Maps (ingresando su URL en el campo de búsqueda). Aquí está el archivo KML que he usado en el proyecto anterior, loaded directly into Google Maps. (De hecho, he usado un archivo KMZ aquí, pero es simplemente un archivo KML empaquetado en un archivo ZIP. Puede empacarlo y descomprimirlo con las herramientas ZIP normales).
COMIENZO ACTUALIZACIÓN 07/2015: Desafortunadamente Google ha eliminado la posibilidad de Ingrese directamente la URL de un archivo KML/KMZ en el campo de búsqueda de su Google Maps público cuando lanzó su versión rediseñada en 2014. Puede seguir utilizando todas las técnicas que se analizan en esta respuesta, pero no puede simplemente obtener una vista previa de los archivos KML ingresando su URL en el campo de búsqueda más. Si necesita el KMZ mencionado anteriormente para un análisis posterior, puede download it here. FIN ACTUALIZAR

Tenga en cuenta que Google implica un límite de tamaño para los archivos KML/KMZ (actualmente 10 Mb sin comprimir, 3 Mb comprimido - details see here). Si sus archivos KML deben ser demasiado grandes, hay un software disponible para reducir la complejidad (consulte los ejemplos here y here).

Encontrará datos de mapas gratuitos en muchos lugares de Internet, la mayoría de ellos en formato de archivo de forma ESRI. Una gran fuente para los mapas de países es http://www.gadm.org/ con la gran ventaja de proporcionar sus datos en formato KML/KMZ también. Si debe convertir los archivos shape de ESRI a KML, eche un vistazo al gran (y gratis) OGR converter.

Tenga en cuenta que los archivos KML son solo una solución si sus polígonos son estáticos (como el límite de Suecia) y no dependen de ninguna entrada del usuario. Para los polígonos dinámicos, igual tendrá que usar la clase Polygon de la API de Maps con las restricciones de complejidad que ha mencionado.

+0

Hola, gran respuesta, pero el enlace KMZ está roto. ¿Cómo diseñó una marca de posición para que el exterior esté enmascarado? – wrecker

+1

Hola @wrecker, tienes razón, el enlace estaba roto. He corregido el enlace, pero encontré que la opción de previsualizar directamente los archivos KML/KMZ en el campo de búsqueda del público Google Maps se eliminó cuando lanzaron su nueva versión en 2014. Todavía puede utilizar todas las técnicas que se analizan aquí, usted solo pierde la opción de vista previa simple. Para enmascarar el exterior de un país, hice un gran círculo con el país sacado de allí. Descargue mi KMZ (el enlace funciona de nuevo ahora) y verifíquelo. – Jpsy

4

tenían un problema similar y lo logró mediante la combinación de gamps con mesas de fusión:

var table_id = 420419; //can be exchanged wit another table 
var FT_Query = "SELECT 'kml_4326' FROM "+ table_id +" WHERE 'name_0' NOT EQUAL TO 'SWEDEN'"; 
var FT_Options = 
    { 
    suppressInfoWindows: true, 
    query: FT_Query 
    }; 
var layer = new google.maps.FusionTablesLayer(table_id, FT_Options); 
layer.setMap(map); 
Cuestiones relacionadas