2013-03-16 4 views
6

Я использую последний SDK для Google Maps iOS в своем приложении, и, похоже, местоположение GPS всегда смещается в Китае на 1-2 уличных блока, однако в официальном приложении Google Maps местоположение на 100% правильное.GPS-местоположение всегда смещено в Китае

я наткнулся на этот пост, который, кажется, причина, почему: http://home.wangjianshuo.com/archives/20081109_all_maps_in_china_are_transformed.htm

Кажется, официальное приложение использует правильно преобразованного карту в то время как Google Maps IOS SDK не делает. Кто-нибудь нашел способ обойти это?

+0

Я загрузил новейший API 1.2.1 и все еще имею ту же проблему. Использование SDKDemos при условии, что указанное местоположение отличается от местоположения на официальных картах Google. Всегда на 1-2 блока. Кажется, это просто в Китае. Любое исправление? – Josh

+0

Вопрос Yoru исправлен или нет? вы тестируете на тренажере или устройстве? –

+3

Я создал категорию на CLLocation, которая может компенсировать позицию в Китае, чтобы компенсировать ошибку: https://github.com/maxime/ChinaMapDeviation – maximeguilbot

ответ

0

Разве это не связано с другой системой координат, используемой в Китае, с той, которую мы используем WGS84?

Вот некоторые code, которые могут обрабатывать переводы с WGS84

+2

По-видимому, [не очень понятно, относится ли этот код к отклонению GPS] (https: // github. ком/googollee/eviltransform/вопросы/6). –

6

Причиной GPS offset in China является сочетание технологии (разные датумов) и политические/экономические интересы.

В связи с «проблемами безопасности» в Китае используется другая система координат от остального мира - GCJ-02 вместо стандарта WGS-84, используемого спутниками GPS и подавляющим большинством карт. Все карты Китая должны быть одобрены Государственным советом, чтобы отметить позицию Китая в отношении различных политически оспариваемых владений (Тибет, Тайвань и т. Д.). Утверждение также требует, чтобы карты использовали GCJ-02. Это приводит к тому, что местоположения WGS-84, такие как GPS-треки от неподдельного GPS-приемника, будут отображаться «выключены» при построении на китайских уличных картах.

GPS coordinates appear offset on GCJ-02 map

Другая система координат обычно не является проблемой, но Китай решил зашифровать GCJ-02, так что не было никакой прямой трансформации. Первый attempt at a conversion использовал a database of coordinates obtained from Google China Maps (ditu.google.com), когда раньше он мог рассчитывать отклонение в 2010 году. Это был метод интерполяции и несколько неточно. Наборы данных пошли на продажу с offsets calculated for thousands of Chinese cities.

В то же время алгоритм GCJ-02 просочился и является «публичной тайной» (поиск «конверсии GCJ-02» находит множество результатов). Популярным является проект eviltransform, который предлагает API конверсий для C, C#, Go, Java, JavaScript и PHP. geoChina library обрабатывает преобразование между GJC-02, WGS-084 и Бэйду BD-09, используя R.

код нетривиально, а также выполняет very roughbounding box check, чтобы определить, есть ли место в Китае:

function outOfChina(lat, lng) { 
    if ((lng < 72.004) || (lng > 137.8347)) { 
     return true; 
    } 
    if ((lat < 0.8293) || (lat > 55.8271)) { 
     return true; 
    } 
    return false; 
} 

Это включает в себя большую часть Индии, всей Южной и Северной Кореи, Филиппин, Вьетнама, Монголии, Таиланда, а также множество других стран:

enter image description here

Улучшение должно было бы использовать границу многоугольника, такую ​​как china.kml.

Смежные вопросы