longitude latitude google iphone cocoa-touch google-maps

iphone - latitude - url scheme google maps ios



Integrar API de Google Maps en una aplicaciĆ³n de iPhone (11)

También intente echar un vistazo al componente google maps .

Actualización: iPhone SDk 3.0 ahora aborda la pregunta aquí, sin embargo, la NDA evita cualquier discusión en profundidad. Inicie sesión en el iPhone Dev Center si necesita más información.

Ok, tengo que admitir que estoy un poco perdido aquí.

Estoy bastante cómodo con Cocoa, pero estoy teniendo problemas para recoger el bit de javascript necesario para resolver este problema.

Estoy intentando enviar una solicitud a Google para obtener un código geográfico inverso.

Revisé la documentación de Google que vi aquí: http://code.google.com/apis/maps/documentation/index.html http://code.google.com/apis/maps/documentation/geocoding/

Incluso después de una lectura aproximada, me falta un concepto básico:

¿Cómo hablo con google? En algunos ejemplos, muestran que se está enviando una URL a google (lo que parece bastante fácil), pero en otros muestran javascript. Parece que para la geocodificación inversa, la solicitud puede ser más difícil que enviar la URL con algunos parámetros (pero espero estar equivocado).

¿Alguien puede indicarme la forma correcta de hacer una solicitud? (En el objetivo C, entonces puedo envolver mi cabeza)


En realidad, no quise decir geocodificación inversa como "traducir un punto a una dirección legible por humanos", sino más bien visualizar un punto usando un mapa de Google (que también puede, según el nivel de precisión, mostrar una dirección legible por humanos). Esta es la funcionalidad básica que se requería.

En la práctica, solo quería sugerir la API de mapas estáticos como una manera limpia y rápida de:

1) dadas las coordenadas obtenidas del sensor de GPS del iPhone, recupera un mapa de Google que muestra el punto

2) se le da una dirección, se transforma en las coordenadas geográficas correspondientes y luego se usan las coordenadas para recuperar un mapa de Google que muestra la dirección dada

Ambos son posibles usando NSURL simples que involucran el mapa estático y los servicios geo

http://maps.google.com/staticmap ? http://maps.google.com/maps/geo ?

pasando, por supuesto, los parámetros necesarios para proporcionar una cadena de consulta adecuada.

Saludos cordiales


La forma más fácil de obtener un mapa de Google utilizando Cocoa es usar la "API de mapas estáticos". En la práctica, debe preparar un NSURL que use para contactarse con Google. Usted recupera su mapa como NSData, que transforma a un NSImage. Tenga en cuenta que puede hacer tanto geocodificación como geocodificación inversa. También puede insertar marcadores en el mapa. Sin embargo, pierde los controles completos a los que tiene acceso si usa su API de JavaScript.

Eche un vistazo a su guía de referencia aquí:

http://code.google.com/apis/maps/documentation/staticmaps/


Para su información: la API de geocodificación inversa de Google para las solicitudes de XML no es pública, por lo que es ilegal su uso. La única forma legal es pasar por su JavaScript-API, que como descubriste es más difícil de hacer en Cocoa que simplemente enviar una solicitud HTTP.

Alternativas: la geocodificación inversa con solicitudes XML / JSON simples también está disponible en Geonames o Yahoo .


Ahora que Apple ha lanzado la API de MapKit para OS 3.0, creo que tu pregunta ha sido respondida. ¡Después de haber mirado los documentos API, puedo ver muchísimo potencial! Todavía me gustaría ver el servicio web de geocodificación inversa de Google, pero Yahoo lo hará mientras tanto.


ACTUALIZACIÓN - iPhone 0.3 incluye MapKit, que esperamos que sea significativamente más rápido que usar la API de JS. La propaganda dice que incluirá geocodificación inversa.

No puede realizar una solicitud directamente en el objetivo C, al menos no dentro de los términos de la API de Google. La API de Google está escrita en Javascript. Podrías usar un puente de objetivo-c a JS, como lo hace el Componente de Google Maps , pero eso realmente no resuelve el problema, ¡aún estás haciendo llamadas JS!

Desafortunadamente, eso significa que a) necesita usar una vista web b) necesita usar la API JS, que es lenta ... compárela con la aplicación Google Maps que usa un protocolo OTA completamente diferente (intente con el paquete oliéndolo).

El componente Google Maps es, sin embargo, un útil tutorial sobre cómo hacer llamadas simples a la API.


El gran problema, por supuesto, es que el acuerdo de licencia de ambos estados, google y yahoo, no puede usar estas API en "aplicaciones comerciales". odiaría publicar una aplicación en la tienda de aplicaciones solo para que sea desactivada y demandada por Yahoo o Google. Al leer la API api del iPhone 3.0 y la licencia asociada, esto no se menciona, pero si desea que una aplicación se ejecute en teléfonos no actualizados ...

¿Hay alguna respuesta para esto que no lo meta en problemas?




Desde iOS5 tenemos las siguientes opciones como se indica en el documento de desarrollo: * "Un objeto geocodificador utiliza un servicio de red para convertir entre valores de latitud y longitud y una marca de posición fácil de usar, que es una colección de datos como calle, ciudad, información sobre el estado y el país. La geocodificación inversa es el proceso de convertir una latitud y longitud en una marca de posición. Reenviar la geocodificación es el proceso de convertir la información del nombre del lugar en un valor de latitud y longitud. solo se admite en iOS 5.0 y versiones posteriores. "*

Ahora puede usar un objeto CLGeocoder.


Creé SVGeocoder , una simple clase de geocodificador directo e inverso para iOS. Utiliza la API de geocodificación de Google, devuelve objetos SVPlacemark (una subclase MKPlacemark con una propiedad de coordinate ) y utiliza bloques.

Así es como geocodifica una cadena de direcciones:

[SVGeocoder geocode:addressString completion:^(NSArray *placemarks, NSError *error) { // do something with placemarks, handle errors }];

También puede revertir el geocodificación de una coordenada como esta:

[SVGeocoder reverseGeocode:CLLocationCoordinate2DMake(45.53264, -73.60518) completion:^(NSArray *placemarks, NSError *error) { // do something with placemarks, handle errors }];