ios mapkit ios6 ios6-maps

¿Cómo lidiar con los mapas chinos inconsistentes en iOS 6?



mapkit ios6 (3)

Para los mapas chinos en iOS 6, parece que MapKit selecciona el proveedor de mapas según la ubicación del dispositivo. Si estás en China, utilizará los mapas de AutoNavi, y si no, utilizará los mapas predeterminados de Apple. Para complicar las cosas, los mapas de AutoNavi parecen transformarse de la misma manera que los mapas de Google en iOS 5, mientras que los mapas predeterminados de Apple no se transforman.

Por transformación , estoy hablando del hecho de que todos los mapas en China se transforman , aunque esto no es cierto. Más bien, algunos mapas en China se transforman, mientras que otros no.

Esta transformación hace que sea difícil colocar las anotaciones correctamente en el mapa, ya que el mapa generalmente está desplazado unos 500 metros. Como no es posible invertir la transformación del mapa real, la solución es aplicar el mismo desplazamiento a las anotaciones.

Existen formas no triviales para invertir la transformación, al menos para áreas limitadas. El problema en iOS 6 es saber si el mapa se transforma o no para compensar las anotaciones de manera adecuada. En iOS 5, este problema no existía, ya que los mapas transformados se utilizaron de manera consistente.

Los mapas de Shanghai a continuación ilustran la situación (no se demuestra la compensación de transformación real).

Entonces, ¿habría alguna forma de saber en tiempo de ejecución si se usan mapas de China transformados o no transformados? Otras ideas para lidiar con esto?

Edición: enrutar el tráfico de red a través de un proxy en China cambia la apariencia del mapa en el simulador, por lo que la elección del proveedor del mapa debe basarse en IP.


¿No podría obtener datos geográficos del teléfono y, si están en China, aplicar las anotaciones transformadas?



Siempre puede usar el SDK de Bing Maps si realmente necesita coherencia, es decir, la coherencia entre las versiones de iOS y entre las personas de EE. UU. O China. Aunque recomendaría seguir con MapKit.