アプリ内の Baidu および Gaode サードパーティ地図ナビゲーションにジャンプします

プロジェクトの中で、緯度と経度に基づいてサードパーティのナビゲーションにジャンプする必要が生じ、インターネットで検索したところ、すべて同じ記事であり、目的地の住所が正しく表示されませんでした。 Baidu と Gaode Maps の公式ウェブサイトに行って検索しましたが、場所は非常に隠されています。

1. Gaode Map APPを呼び出す

Gaode Map APP を呼び出す方法は 2 つあります。

  • 1 つは、Web の URI アドレスにアクセスすることで実現します。この方法で記述すると、APP がブラウザにジャンプして、H5 ページの Gaode マップにアクセスします。パラメータが 1 に設定されている場合、ブラウザは次の質問をします。 Gaodecallnativeマップ アプリを開く必要があるかどうか

    https://uri.amap.com/navigation?from=116.478346,39.997361,startpoint&to=116.3246,39.966577,endpoint&via=116.402796,39.936915,midwaypoint&mode=car&policy=1&src=mypage&coordinate=gaode&callnative=0
    

    WEB-URIで公式ドキュメントへジャンプ

  • もう 1 つは、一般的に使用される直接ジャンプ方法で、URL_TYPEGaode APP を通じて直接実現されます。この方法は、出発地の緯度経度データベースと目的地の緯度経度、および目的地の住所に基づく必要があります。目的地住所が空の場合、地図上にない地点も表示されます

    //访问地址示例(直接发起导航)
    iosamap://navi?sourceApplication=applicationName&poiname=fangheng&poiid=BGVIS&lat=36.547901&lon=104.258354&dev=1&style=2
    
    //访问地址示例(路线规划)
    iosamap://path?sourceApplication=applicationName&sid=&slat=39.92848272&slon=116.39560823&sname=A&did=&dlat=39.98848272&dlon=116.47560823&dname=B&dev=0&t=0
    
    

    Gaode APPの公式ドキュメントに直接ジャンプします

2. APP は Baidu Map APP を呼び出します

Baidu Maps はURL_TYPEメソッドを通じて Baidu Maps APP に直接ジャンプし、リンクで目的地アドレスを設定できます。Baidu Maps が目的地アドレスを設定する場合、文書にはかなり曖昧であると記載されています。次の形式で設定する必要があります。 : destination=name:destination address|latlng:40.007623, 116.360582、縦線で区切る

//访问地址示例(路线规划)
baidumap://map/direction?origin={
    
    {
    
    我的位置}}&destination=name:目的地地址|latlng:40.007623,116.360582&coord_type=bd09ll&mode=driving&src=ios.baidu.openAPIdemo

Baidu APP 公式ドキュメントに直接ジャンプします

3. Baidu と Gaode 座標の相互変換


/** 百度地图转高德地图坐标 */
- (CLLocationCoordinate2D) bd_decrypt:(double)bd_lat bd_lon:(double)bd_lon
{
    
    
  double x = bd_lon - 0.0065, y = bd_lat - 0.006;
  double z = sqrt(x * x + y * y) - 0.00002 * sin(y * x_pi);
  double theta = atan2(y, x) - 0.000003 * cos(x * x_pi);
  CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(z * sin(theta), z * cos(theta));
  return coordinate;
}


/** 高德地图转百度地图坐标 */
- (CLLocationCoordinate2D) bd_decrypt:(double)gg_lat gg_lon:(double)gg_lon
{
    
    
  double x = gg_lon, y = gg_lat;
  double z = sqrt(x * x + y * y) + 0.00002 * sin(y * x_pi);
  double theta = atan2(y, x) + 0.000003 * cos(x * x_pi);
  
  CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(z * sin(theta)+0.006, z * cos(theta)+0.0065);
  return coordinate;
}

Supongo que te gusta

Origin blog.csdn.net/zhanglei5415/article/details/131461330
Recomendado
Clasificación