Conversão entre as coordenadas do mapa Baidu e as coordenadas do mapa Gaode


Existem muitos posts na Internet para resolver esse tipo de problema, mas aqui você precisa registrar seu próprio processo de solução de problemas.

Histórico da demanda :

O sistema de coordenadas Baidu BD-09 é usado no projeto. Quando o APP pula para o mapa Gaode APP, embora as coordenadas tenham sido convertidas, ainda há um deslocamento exibido no mapa Gaode. Daí a pergunta: resolva o problema de deslocamento de coordenadas.

Ideias de solução :

Comece pelos seguintes aspectos:
1. O sistema de coordenadas original está errado, por exemplo, você pensa que são coordenadas GPS, mas na verdade são coordenadas GCJ-02.
Solução: certifique-se em qual sistema de coordenadas os dados coletados estão, para qual sistema de coordenadas precisa ser convertido e, em seguida, execute a conversão de coordenadas.
2. A precisão das coordenadas originais não é suficiente
Solução: Se você estiver em coordenadas GPS, certifique-se de que pelo menos 4 satélites sejam encontrados ao coletar dados GPS. E se os dados do GPS são precisos ou não, depende da altura dos edifícios ao redor. Quanto maior a altura, mais imprecisa ela será devido à oclusão.
Se forem as coordenadas de GCJ-02, os lugares que você vê podem ser diferentes em diferentes níveis de zoom do mapa. Por exemplo, quando você amplia o nível 12 (rua) das coordenadas obtidas no nível 4 do mapa (país), as coordenadas estarão desativadas. Certifique-se de pegar as coordenadas quando o mapa estiver em seu nível máximo de zoom.
3. Os conceitos de graus, minutos e segundos são confusos.
Por exemplo, os dados coletados no Google Earth são 39°31'20,51, portanto devem ser convertidos desta forma. 31 minutos são 31/60 graus e 20,51 segundos é 20,51/3600 graus. O resultado é 39 + 31/60 + 20,51/3600 graus.
4. A ordem de latitude e longitude é invertida.
Algumas empresas (como AutoNavi, Baidu e Tencent) escrevem primeiro a longitude, depois a latitude, ou seja, Point(lng lat). Mas a ordem das coordenadas do Google é exatamente o oposto, é (lat lng).

Implementação do programa :

1. Imprima o log no programa para obter o sistema de coordenadas do Baidu, passe o sistema de coordenadas de Marte convertido e verifique se o resultado convertido está correto. A ferramenta de verificação: seletor de coordenadas do Baidu ( http://api.map.baidu.com / lbsapi/getpoint/index.html ), seletor de coordenadas Gaode ( http://lbs.amap.com/console/show/picker ).
Aqui, descobriu-se que há um problema com o algoritmo de conversão e o resultado da conversão é tendencioso. O algoritmo deve ser adotado: http://blog.csdn.net/w605283073/article/details/64906518

2. Depois de converter do sistema de coordenadas Baidu para obter o sistema de coordenadas de Marte correto, saltando de seu próprio APP para o mapa Gaode e descobriu que ainda há um deslocamento. Então o problema deve estar no processo de salto do APP. Portanto, verifica-se que há um problema com o código de salto e o código de salto correto é postado logo abaixo:

// viewMap-服务类型,
// sourceApplication-第三方调用应用名称,
// poiname-POI名称,
// lat-经纬度参数,lon-经纬度参数,
// dev-起终点是否偏移(0:lat和lon是已经加密后的,不需要国测加密;1:需要国测加密)
Intent intent = new Intent("android.intent.action.VIEW",                  android.net.Uri.parse("androidamap://navi?sourceApplication=我的应用&poiname=应用&lat="
+ loc.getLat() + "&lon=" + loc.getLng()
+ + "&dev=0"));
intent.setPackage("com.autonavi.minimap");
context.startActivity(intent);

Nota: Para o parâmetro dev aqui, geralmente é necessário escrever dev=0, ou seja, através do algoritmo de conversão na etapa 1, as coordenadas já estão criptografadas pela pesquisa nacional e não há necessidade de realizar a criptografia da pesquisa nacional, caso contrário, os resultados obtidos serão exibidos no mapa. Referenciado aqui ( http://blog.csdn.net/u010998327/article/details/71515147 )

Em resumo, após as etapas acima, o problema de deslocamento de conversão de coordenadas é corrigido. Por analogia, a solução para os problemas de conversão e deslocamento de outros sistemas de coordenadas deve ser como acima, como: a conversão do sistema de coordenadas Mars para o sistema de coordenadas Baidu, a conversão mútua entre o sistema de coordenadas WGS-84 e o Baidu, etc. .

Referências :

https://segmentfault.com/a/1190000000498434
http://blog.csdn.net/u010998327/article/details/71515147
http://blog.csdn.net/w605283073/article/details/64906518

Acho que você gosta

Origin blog.csdn.net/lrxb_123/article/details/78804869
Recomendado
Clasificación