Tengo algunos problemas con la API de Google Maps; Quiero determinar un LatLong para un lugar determinado (por ejemplo, desde el nombre de una ciudad) y luego centrar mi mapa en él. La parte LatLong está funcionando, y también está centrando el mapa en ese punto. Sin embargo, no puedo encontrar la forma de determinar qué tan bueno puede ser el nivel de zoom cuando solo tengo ese único punto. No puedo ir a un nivel de zoom estándar que se vea bien la mayor parte del tiempo, porque ¿qué sucede cuando el usuario ingresa "Rusia" en lugar de "Amsterdam", por ejemplo? Alguna ayuda sería apreciada :)Determinación del nivel de zoom desde un único LatLong en la API de Google Maps
Respuesta
Tuve la misma pregunta, y la respuesta de Nick Retallack fue lo que funcionó para mí. Para proporcionar más detalles, el nombre de la propiedad no documentada es "ExtendedData", y dentro de eso tiene "LatLonBox" que contiene los límites norte, sur, este y oeste del nivel de zoom apropiado.
Por ejemplo, si tuviera que hacer una búsqueda de "90210", aquí está la salida (que he formateado para facilitar la lectura):
{
"id":"p1",
"address":"Beverly Hills, CA 90210, USA",
"AddressDetails":{
"Accuracy":5,
"Country":{
"AdministrativeArea":{
"AdministrativeAreaName":"CA",
"SubAdministrativeArea":{
"Locality":{
"LocalityName":"Beverly Hills",
"PostalCode":{"PostalCodeNumber":"90210"}
},
"SubAdministrativeAreaName":"Los Angeles"
}
},
"CountryName":"USA",
"CountryNameCode":"US"
}
},
// This is what you're looking for "ExtendedData":{ "LatLonBox":{ "north":34.13919, "south":34.067018, "east":-118.38971, "west":-118.442796 } },
"Point":{
"coordinates":[-118.4104684,34.1030032,0]
}
}
Este Sin embargo, no está documentado, por lo que no estoy seguro de si sobrevivirá a los cambios de API. Lo mejor es no asumir que siempre estará ahí, y definir algún valor de zoom predeterminado razonable.
A su pregunta le falta un parámetro de entrada. Está diciendo LatLon point, pero en realidad necesita LatLonBounds para enfocar el tamaño de ventana de mapa disponible. Supongo que quieres imitar el comportamiento oficial del mapa de Google. Además de la geocodificación, dependen de otros datos a los que no tiene acceso la API de Gmap. Entonces debes proporcionar la tuya.
La siguiente llamada le dará el nivel de zoom si se puede proporcionar con un objeto límites rectangulares apropiado:
GMap2.getBoundsZoomLevel(bounds)
Pero la forma de calcular los límites?
Puede anotar manualmente cada registro fuente con un rectángulo determinado "a ojo" utilizando un mapa y que alguien escriba los valores.
Lo ideal es que desee datos, y por suerte hay una gran cantidad de datos sobre DBPedia.
Mi geometría y álgebra están un poco oxidadas, pero con un poco de ambas estoy seguro de que puede calcular un rectángulo dado el área de la ubicación que desea ver. (Tal vez comenzar con la raíz cuadrada, si asumiendo una ciudad cuadrada, o reorganizar πr si se supone que uno circular)
Try out esta consulta para extraer las áreas de las regiones.
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbpedia2: <http://dbpedia.org/property/>
SELECT ?url, ?label, ?lat, ?long, ?area WHERE {
?url geo:lat ?lat .
?url geo:lat ?long .
?url rdfs:label ?label . FILTER (lang(?label) = 'en') .
?url dbpedia2:area ?area . FILTER (datatype(?area) = xsd:double)
} LIMIT 10
Usted necesitará para almacenar en caché los resultados o cargarlos en una fuente de datos más rápida y local, como es la búsqueda DBPedia millones de triples de datos no estructurados (así datos RDF). Puede download the Titles, Infobox and coordinates data sets de DBPedia y cargarlos en, por ejemplo, Jena. Recuerde desactivar todas las opciones de validación durante la carga :-)
También puede acceder a estos datos utilizando un RESTful API que tiene un formulario web bastante utilizable, y es posible extraer la URL generando usando "Copiar botón de enlace de descarga" en la ventana de descargas de firefox, o establecer el formato de salida a HTML. También genera XML y JSON.
No se olvide de añadir un margen para las ciudades en forma tambaleante ...
simplemente hice esta pregunta en el Google IO. Esta característica existe, pero no está documentada y aún no tiene acceso para ella. Lo que quiere hacer es obtener el Structured Address. Inspecciona la estructura JSON que recuperas y busca estos nuevos parámetros. Publicaré más información cuando tenga la oportunidad de probar esto.
¿Obtiene sus puntos de ubicación del Geocoder? Si es así, puede tomar la precisión del punto y basar su zoom en eso (mayor precisión = mayor zoom).
Implementé una versión de la solución de Nick Retallack en Objective-C aquí.
Equivalent Objective-C code for Google Maps GMap2.getBoundsZoomLevel(bounds)?
que tenían el mismo problema here, pero con una versión de la API más reciente. La nueva solución es map.fitBounds(autocomplete.getPlace().geometry.viewport);
.
- 1. Google Earth Determinación del nivel de zoom desde el cuadro delimitador
- 2. Zoom específico en Google Maps
- 3. Google Maps API v3 ¿estableció el nivel de zoom para mostrar un radio dado?
- 4. ¿Cómo cambiar el nivel de zoom de Google Maps programáticamente?
- 5. Google Maps v3: área visible límite y nivel de zoom
- 6. Google Maps API: Calcular el centro/Zoom de Polyline
- 7. Google-Maps v3: ¿Cómo cambiar el estilo del mapa en función del nivel de zoom?
- 8. En caso de zoom para google maps en android
- 9. ¿Cómo hacer zoom suavemente en un marcador en Google Maps?
- 10. ¿La API v3 de Google Maps permite valores de zoom mayores?
- 11. max zoom in google maps
- 12. ¿Cómo funciona este cálculo del nivel de zoom de Google Maps?
- 13. Google Maps API limitaciones
- 14. Google Maps API V3 desactivar el zoom suave
- 15. ¿Cómo eliminar un MapType del mapa de Google Maps con la API de JavaScript de Google Maps?
- 16. Google Maps, Ruby on Rails, el nivel de zoom con un marcador
- 17. Google Maps API - cargar los EE. UU.
- 18. ¿Cómo determino el entero de nivel máximo de zoom para Google Maps?
- 19. Google maps api ¿Gradiente del círculo?
- 20. Google Maps API: evitar arrastrar a un área gris
- 21. Función Google Maps API map.getCenter()
- 22. Zoom para centrar en un mapa en Google Maps API V3
- 23. Google Maps API v2 vs Google Maps API v3?
- 24. Abra Google Maps desde iPhone y muestre la ruta
- 25. Google maps API V3 método fitBounds()
- 26. Google Maps: ¿Cómo mover los controles de zoom?
- 27. API de Google Maps vs API Multimapa/Bing Maps
- 28. zombie.js y Google Maps API
- 29. Google Maps API
- 30. Mueva la barra de zoom hacia la derecha con Google Maps API v3