vivo street rutas obelisco gratis google español google-maps

street - Determinación del nivel de zoom desde un solo LatLong en Google Maps API



obelisco google maps (7)

Tengo 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? Un poco de ayuda sería apreciada :)


La siguiente llamada le dará el nivel de zoom si puede proporcionarle un objeto apropiado de límites rectangulares:

GMap2.getBoundsZoomLevel(bounds)

Pero, ¿cómo 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 sería que desea datos, y afortunadamente hay una gran cantidad de datos en DBPedia.

Mi geometría y álgebra están un poco oxidados, pero con un poco de ambos estoy seguro de que puedes calcular un rectángulo dado el área de la ubicación que deseas ver. (Tal vez comience con la raíz cuadrada si se asume una ciudad cuadrada, o reordene πr 2 si se asume una circular)

Pruebe 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

Deberá almacenar en caché los resultados o cargarlos en un origen de datos más rápido y local, ya que DBPedia está buscando millones de triples de datos no estructurados (datos RDF correctos). Puede descargar los Títulos, Infobox y coordinar conjuntos de datos 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 una API RESTful 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 en HTML. También genera XML y JSON .

No te olvides de agregar un margen para las ciudades con forma tambaleante ...


Acabo de hacer esta pregunta en Google IO. Esta característica existe, pero no está documentada y aún no tiene acceso para ella. Lo que quiere hacer es obtener la Dirección Estructurada . Inspecciona la estructura JSON que recuperas y busca estos nuevos parámetros. Publicaré más información cuando tenga la oportunidad de probar esto.


¿Estás obteniendo tus 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).


Tenía 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 hiciera una búsqueda de "90210", aquí está la salida (que he formateado para la legibilidad):

{ "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] } }

Sin embargo, esto 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.



Tuve el mismo problema aquí , pero con una versión de API más nueva. La nueva solución es map.fitBounds(autocomplete.getPlace().geometry.viewport); .


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.