国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

如何調(diào)用百度地圖API

這篇具有很好參考價值的文章主要介紹了如何調(diào)用百度地圖API。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

?如何調(diào)用百度地圖API

前言

要調(diào)用百度地圖API,步驟操作如下

  1. 注冊并創(chuàng)建一個API密鑰。您可以在百度地圖API控制臺上創(chuàng)建您的密鑰。
  2. 選擇要使用的API服務(wù)。百度地圖API提供了多種服務(wù),包括地圖展示、路線規(guī)劃、地點搜索、實時交通等。您可以在百度地圖API控制臺上查看所有可用的服務(wù)。
  3. 在調(diào)用API時,將API密鑰添加到請求中。

官網(wǎng):百度地圖開放平臺 | 百度地圖API SDK

1、了解地圖開放平臺

?可以看到開發(fā)文檔支持多種類型,前端到后臺等等。百度地圖API提供了多種服務(wù),包括地圖展示、路線規(guī)劃、地點搜索、鷹眼軌跡,定位,實時交通等。

如何調(diào)用百度地圖API

?2、創(chuàng)建百度地圖AK

2.1、控制臺→應(yīng)用管理→我的應(yīng)用→創(chuàng)建應(yīng)用

如何調(diào)用百度地圖API

2.2、創(chuàng)建應(yīng)用名字

如何調(diào)用百度地圖API

?為什么高級是灰色選不了,是因為高級服務(wù)是需要付費的。

2.4、IP白名單設(shè)置

如何調(diào)用百度地圖API

?2.5、查看AK

如何調(diào)用百度地圖API

3、JAVA調(diào)用百度地圖

3.1、地點檢索

3.1.1、調(diào)用百度Api?

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.text.DecimalFormat;
import java.util.Map;


public class BaiduApiController {

    public static void main(String[] args) {
        String ak = "自己AK";
        String address = "天津之眼摩天輪";
//        String httpUrl = "http://api.map.baidu.com/geocoding/v3/?address="+address+ ak;
        String httpUrl = "http://api.map.baidu.com/geocoding/v3/?address="+address+"&output=json&ak=" + ak;
        StringBuilder json = new StringBuilder();
        try {
            URL url = new URL(httpUrl);
            URLConnection urlConnection = url.openConnection();
            BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), "UTF-8"));
            String inputLine = null;
            while ((inputLine = in.readLine()) != null) {
                json.append(inputLine);
            }
            in.close();
        } catch (MalformedURLException e) {
        } catch (IOException e) {
        }
        System.out.println(json.toString());
        String data = json.toString();
        if (data != null && !"".equals(data)) {
            Map map = JSON.parseObject(data, Map.class);
            if ("0".equals(map.getOrDefault("status", "500").toString())) {
                Map childMap = (Map) map.get("result");
                Map posMap = (Map) childMap.get("location");
                double lng = Double.parseDouble(posMap.getOrDefault("lng", "0").toString()); // 經(jīng)度
                double lat = Double.parseDouble(posMap.getOrDefault("lat", "0").toString()); // 緯度
                DecimalFormat df = new DecimalFormat("#.######");
                String lngStr = df.format(lng);
                String latStr = df.format(lat);
                String result = lngStr + "," + latStr;
                System.out.println("坐標(biāo)"+result);
            }
        }
    }
}

3.1.2、查看結(jié)果

如何調(diào)用百度地圖API

3.1.3、驗證

如何調(diào)用百度地圖API

如何調(diào)用百度地圖API

如何調(diào)用百度地圖API

3.2、計算兩點之間距離

3.2.1、調(diào)用百度Api?

mport com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.text.DecimalFormat;
import java.util.Map;

/**
 * 百度地圖操作工具類
 */
public class BaiduApiUtils {
    public static void main(String[] args) {
        String origin = getCoordinate("天津之眼摩天輪");
        String destination = getCoordinate("北京市百度大廈");
        Double distance = getDistance(origin, destination);
        System.out.println("訂單距離:" + distance + "米");
        Integer time = getTime(origin, destination);
        System.out.println("線路耗時" + time + "秒");
    }

    private static String AK = "自己AK";

    /**
     * 調(diào)用百度地圖地理編碼服務(wù)接口,根據(jù)地址獲取坐標(biāo)(經(jīng)度、緯度)
     *
     * @param address
     * @return
     */
    public static String getCoordinate(String address) {
        String httpUrl = "http://api.map.baidu.com/geocoding/v3/?address=" + address + "&output=json&ak=" + AK;
        String json = loadJSON(httpUrl);
        Map map = JSON.parseObject(json, Map.class);

        String status = map.get("status").toString();
        if (status.equals("0")) {
            //返回結(jié)果成功,能夠正常解析地址信息
            Map result = (Map) map.get("result");
            Map location = (Map) result.get("location");
            String lng = location.get("lng").toString();
            String lat = location.get("lat").toString();

            DecimalFormat df = new DecimalFormat("#.######");
            String lngStr = df.format(Double.parseDouble(lng));
            String latStr = df.format(Double.parseDouble(lat));
            String r = latStr + "," + lngStr;
            return r;
        }

        return null;
    }

    /**
     * 調(diào)用百度地圖駕車路線規(guī)劃服務(wù)接口,根據(jù)寄件人地址和收件人地址坐標(biāo)計算訂單距離
     *
     * @param origin
     * @param destination
     * @return
     */
    public static Double getDistance(String origin, String destination) {
        String httpUrl = "http://api.map.baidu.com/directionlite/v1/driving?origin="
                + origin + "&destination="
                + destination + "&ak=" + AK;

        String json = loadJSON(httpUrl);

        Map map = JSON.parseObject(json, Map.class);
        if ("0".equals(map.getOrDefault("status", "500").toString())) {
            Map childMap = (Map) map.get("result");
            JSONArray jsonArray = (JSONArray) childMap.get("routes");
            JSONObject jsonObject = (JSONObject) jsonArray.get(0);
            double distance = Double.parseDouble(jsonObject.get("distance") == null ? "0" : jsonObject.get("distance").toString());
            return distance;
        }

        return null;
    }

    /**
     * 調(diào)用百度地圖駕車路線規(guī)劃服務(wù)接口,根據(jù)寄件人地址和收件人地址坐標(biāo)計算訂單距離
     *
     * @param origin
     * @param destination
     * @return
     */
    public static Integer getTime(String origin, String destination) {
        String httpUrl = "http://api.map.baidu.com/directionlite/v1/driving?origin="
                + origin + "&destination="
                + destination + "&ak=" + AK;

        String json = loadJSON(httpUrl);

        Map map = JSON.parseObject(json, Map.class);
        if ("0".equals(map.getOrDefault("status", "500").toString())) {
            Map childMap = (Map) map.get("result");
            JSONArray jsonArray = (JSONArray) childMap.get("routes");
            JSONObject jsonObject = (JSONObject) jsonArray.get(0);
            int time = Integer.parseInt(jsonObject.get("duration") == null ? "0" : jsonObject.get("duration").toString());
            return time;
        }

        return null;
    }

    /**
     * 調(diào)用服務(wù)接口,返回百度地圖服務(wù)端的結(jié)果
     *
     * @param httpUrl
     * @return
     */
    public static String loadJSON(String httpUrl) {
        StringBuilder json = new StringBuilder();
        try {
            URL url = new URL(httpUrl);
            URLConnection urlConnection = url.openConnection();
            BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), "UTF-8"));
            String inputLine = null;
            while ((inputLine = in.readLine()) != null) {
                json.append(inputLine);
            }
            in.close();
        } catch (MalformedURLException e) {
        } catch (IOException e) {
        }
        System.out.println(json.toString());
        return json.toString();
    }
}

3.2.2、查看結(jié)果

如何調(diào)用百度地圖API

3.3、地點輸入提示

3.3.1、調(diào)用百度Api?

/**
 * 選擇了ak或使用IP白名單校驗:
 */

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.LinkedHashMap;
import java.util.Map;

public class SearchHttpAK {

    public static String URL = "https://api.map.baidu.com/place/v2/suggestion?";

    public static String AK = "自己AK";

    public static void main(String[] args) throws Exception {

        SearchHttpAK snCal = new SearchHttpAK();

        Map params = new LinkedHashMap<String, String>();
        params.put("query", "天安門");
        params.put("region", "北京");
        params.put("city_limit", "true");
        params.put("output", "json");
        params.put("ak", AK);


        snCal.requestGetAK(URL, params);
    }

    /**
     * 默認(rèn)ak
     * 選擇了ak,使用IP白名單校驗:
     * 根據(jù)您選擇的AK以為您生成調(diào)用代碼
     * 檢測到您當(dāng)前的ak設(shè)置了IP白名單校驗
     * 您的IP白名單中的IP非公網(wǎng)IP,請設(shè)置為公網(wǎng)IP,否則將請求失敗
     * 請在IP地址為0.0.0.0/0 外網(wǎng)IP的計算發(fā)起請求,否則將請求失敗
     */
    public void requestGetAK(String strUrl, Map<String, String> param) throws Exception {
        if (strUrl == null || strUrl.length() <= 0 || param == null || param.size() <= 0) {
            return;
        }

        StringBuffer queryString = new StringBuffer();
        queryString.append(strUrl);
        for (Map.Entry<?, ?> pair : param.entrySet()) {
            queryString.append(pair.getKey() + "=");
            queryString.append(URLEncoder.encode((String) pair.getValue(),
                    "UTF-8") + "&");
        }

        if (queryString.length() > 0) {
            queryString.deleteCharAt(queryString.length() - 1);
        }

        java.net.URL url = new URL(queryString.toString());
        System.out.println(queryString.toString());
        URLConnection httpConnection = (HttpURLConnection) url.openConnection();
        httpConnection.connect();

        InputStreamReader isr = new InputStreamReader(httpConnection.getInputStream());
        BufferedReader reader = new BufferedReader(isr);
        StringBuffer buffer = new StringBuffer();
        String line;
        while ((line = reader.readLine()) != null) {
            buffer.append(line);
        }
        reader.close();
        isr.close();
        System.out.println("AK: " + buffer.toString());
    }
}

?3.3.2、查看結(jié)果

如何調(diào)用百度地圖API

4、接口說明

4.1、接口文檔說明

  • 開發(fā)文檔有很多案例類型,可根據(jù)項目業(yè)務(wù)需求進(jìn)行選擇性調(diào)用。

如何調(diào)用百度地圖API

4.2、請求參數(shù)?

  • 有些參數(shù)是必填就比如開發(fā)者密鑰AK ,這個參數(shù)沒有都請求不到數(shù)據(jù)。
字段名稱 字段含義 字段類型 必填 備注
ak

開發(fā)者密鑰,AK申請

string
origin 起點 double,double 起點經(jīng)緯度,格式為:緯度,經(jīng)度;小數(shù)點后不超過6位,40.056878,116.30815
destination 終點 double,double 終點經(jīng)緯度,格式為:緯度,經(jīng)度;小數(shù)點后不超過6位,40.056878,116.30815
origin_uid 起點uid,POI 的 uid(在已知起點POI 的 uid 情況下,請盡量填寫uid,將提升路線規(guī)劃的準(zhǔn)確性) string
destination_uid 終點uid,POI 的 uid(在已知終點POI 的 uid 情況下,請盡量填寫uid,將提升路線規(guī)劃的準(zhǔn)確性) string
riding_type 騎行類型 string

默認(rèn)0
0:普通自行車
1:電動自行車

coord_type 輸入坐標(biāo)類型 string

默認(rèn)bd09ll
允許的值為:
bd09ll:百度經(jīng)緯度坐標(biāo)
bd09mc:百度墨卡托坐標(biāo)
gcj02:國測局加密坐標(biāo)
wgs84:gps設(shè)備獲取的坐標(biāo)

ret_coordtype 輸出坐標(biāo)類型 string

返回值的坐標(biāo)類型,默認(rèn)為百度經(jīng)緯度坐標(biāo):bd09ll
可選值:
bd09ll:百度經(jīng)緯度坐標(biāo)
gcj02:國測局加密坐標(biāo)

sn

用戶的權(quán)限簽名,當(dāng)AK設(shè)置為SN校驗時,該參數(shù)必填SN計算方法

string
timestamp 時間戳,與SN配合使用 string SN存在時必填
steps_info

是否下發(fā)step詳情
1:下發(fā)step詳情
2:不下發(fā)step詳情

int

?4.3、返回參數(shù)?

  • 返回的狀態(tài) ,錯誤碼等等都寫的非常詳細(xì)。
字段名稱 字段含義 備注
status 狀態(tài)碼 0:成功
1:服務(wù)內(nèi)部錯誤
2:參數(shù)無效
7:無返回結(jié)果
message 狀態(tài)碼對應(yīng)的信息
result 返回的結(jié)果
origin
lng 起點經(jīng)度
lat 起點緯度
destination
lng 終點經(jīng)度
lat 終點緯度
routes 返回的方案集
distance 方案距離,單位:米
duration 線路耗時,單位:秒
steps 路線分段
direction 進(jìn)入道路的角度 枚舉值,返回值在0-11之間的一個值,共12個枚舉值,以30度遞進(jìn),即每個值代表角度范圍為30度;其中返回"0"代表345度到15度,以此類推,返回"11"代表315度到345度";分別代表的含義是:0-[345°-15°];1-[15°-45°];2-[45°-75°];3-[75°-105°];4-[105°-135°];5-[135°-165°];6-[165°-195°];7-[195°-225°];8-[225°-255°];9-[255°-285°];10-[285°-315°];11-[315°-345°]
turn_type 行駛轉(zhuǎn)向方向 如“直行”、“左前方轉(zhuǎn)彎”
distance 路段距離 單位:米
duration 路段耗時 單位:秒
name 道路名稱 如:“信息路”
若道路未明或百度地圖未采集到該道路名稱,則返回“無名路“
instruction 路段描述
start_location
lng 分段起點經(jīng)度
lat 分段起點緯度
end_location
lng 分段終點經(jīng)度
lat 分段終點緯度
path 分段坐標(biāo)

4.4、示例代碼(支持多種語言)

如何調(diào)用百度地圖API

總之,根據(jù)自己的業(yè)務(wù)需求去選擇地圖的種類,以上只是介紹服務(wù)端,?感興趣的可以去試一下。文章來源地址http://www.zghlxwxcb.cn/news/detail-494438.html

到了這里,關(guān)于如何調(diào)用百度地圖API的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Leaflet 調(diào)用百度瓦片地圖服務(wù)

    Leaflet 調(diào)用百度瓦片地圖服務(wù)

    在使用 leaflet 調(diào)用第三方瓦片地圖服務(wù)的項目,主要谷歌地圖、高德地圖、百度地圖和 OSM 地圖,與其他三種地圖對比,百度地圖的瓦片組織方式是不同的。百度從中心點經(jīng)緯度(0,0)度開始計算瓦片,而谷歌地圖是從左上角經(jīng)緯度(-180,90)度開始計算瓦片;如果直接使用百度瓦片

    2024年02月08日
    瀏覽(96)
  • 百度地圖API的使用

    百度地圖API的使用

    這篇文章主要想讓讀者掌握: 百度地圖官網(wǎng) API 百度地圖JavaScript API 當(dāng)前的位置在網(wǎng)頁中顯示,插入地圖 拖拽 點擊事件。 應(yīng)用場景:網(wǎng)頁插入百度地圖 注意:不關(guān)注定位、距離、公交,這些功能一般結(jié)合移動端GPS實現(xiàn) 第一步:進(jìn)入官網(wǎng) 百度地圖JavaScript API 直接搜百度地圖

    2024年02月14日
    瀏覽(435)
  • 【QT--使用百度地圖API顯示地圖并繪制路線】

    【QT--使用百度地圖API顯示地圖并繪制路線】

    先吐槽一下下,本身qt學(xué)的就不咋滴,誰想到第一件事就是讓寫一個上位機工具,根據(jù)CAN總線傳來的位置信息,在地圖上去繪制路線,并獲取當(dāng)前路段的限速信息等。當(dāng)聽到這個需求的時候,第一時間是有點懵逼的。自己原本是沒接觸過這方面的知識,而且qt學(xué)的也特別的垃圾

    2024年01月24日
    瀏覽(96)
  • 百度地圖API的使用(附案例)

    百度地圖API的使用(附案例)

    百度地圖JavaScript API是一套由JavaScript語言編寫的應(yīng)用程序接口,可幫助您在網(wǎng)站中構(gòu)建功能豐富、交互性強的地圖應(yīng)用,支持PC端和移動端基于瀏覽器的地圖應(yīng)用開發(fā),且支持HTML5特性的地圖開發(fā)。 在控制臺里選擇創(chuàng)建應(yīng)用 選擇瀏覽器端,白名單輸入* 我們直接把文檔內(nèi)的代碼

    2024年02月06日
    瀏覽(141)
  • 【JavaWeb】百度地圖API SDK導(dǎo)入

    【JavaWeb】百度地圖API SDK導(dǎo)入

    百度地圖開放平臺 | 百度地圖API SDK | 地圖開發(fā) (baidu.com) 登錄注冊,創(chuàng)建應(yīng)用,獲取AK 地理編碼 | 百度地圖API SDK (baidu.com) 需要的接口一: 獲取店鋪/用戶 所在地址的經(jīng)緯度坐標(biāo) 輕量級路線規(guī)劃 | 百度地圖API SDK (baidu.com) 需要的接口二: 通過拿到的起點與終點坐標(biāo) 進(jìn)行計算

    2024年04月09日
    瀏覽(118)
  • 百度地圖JavaScript API添加自定義Marker

    百度地圖JavaScript API添加自定義Marker

    官網(wǎng)指導(dǎo)添加自定義Marker 實際使用中發(fā)現(xiàn)無法顯示圖標(biāo),找了一些博客 百度地圖開發(fā)自定義圖標(biāo)無法顯示的問題 百度地圖自定義圖標(biāo)不顯示問題解決方案 關(guān)于百度地圖開放平臺api覆蓋物“自定義Marker圖標(biāo)”不能正常顯示的解決方案 百度電子地圖自定義marker圖標(biāo) 百度地圖

    2024年02月07日
    瀏覽(89)
  • QT調(diào)用百度地圖并返回點擊地的經(jīng)緯度

    QT調(diào)用百度地圖并返回點擊地的經(jīng)緯度

    最近需要使用百度地圖,并返回某個點的經(jīng)緯度值。網(wǎng)上基本都是根據(jù)經(jīng)緯度定位,而沒有獲取經(jīng)緯度的。自己用QT簡單實現(xiàn)了下。 這塊耗時最久。因為之前QT默認(rèn)的MinGW 64bit無法編譯,需要安裝MSVC2017(注意:安裝Visual Studio 2017,最開始安裝2022也不行)。安裝過程,自行百度。

    2024年02月07日
    瀏覽(23)
  • uniapp上高德(百度)地圖API的使用(APP安卓)

    uniapp上高德(百度)地圖API的使用(APP安卓)

    前言 由于在app中沒有document,window等對象,所以使用在pc端傳統(tǒng)方法引入的方式,將會發(fā)現(xiàn)無法引用成功,會出現(xiàn)白屏現(xiàn)象。 目前有兩種解決方式: 使用uniapp的web-view方式(百度地圖) 使用renderjs來調(diào)用document等js對象(高德地圖) map.vue: 中間實時顯示地圖上圖標(biāo)的個數(shù),以及

    2023年04月10日
    瀏覽(121)
  • 利用R語言通過百度地圖API進(jìn)行批量地理編碼

    利用R語言通過百度地圖API進(jìn)行批量地理編碼

    當(dāng)您有大量的地點名稱需要在地圖上來呈現(xiàn)時,首先要在在線地圖上找到該地址的坐標(biāo),通常是指經(jīng)緯度,如果能夠用代碼來實現(xiàn),便少了許多費時費力的體力活兒,以下將詳細(xì)介紹地理編碼的詳細(xì)實現(xiàn)路徑,即使您是一個編程小白,只要會打開軟件,也可輕松搞定批量地理

    2024年02月11日
    瀏覽(87)
  • 【App端】uni-app使用百度地圖api和echarts省市地圖下鉆

    【App端】uni-app使用百度地圖api和echarts省市地圖下鉆

    近期的app項目中想加一個功能,展示全國各地的某一數(shù)據(jù)統(tǒng)計情況,想來想去,用echarts做地圖數(shù)據(jù)可視化直觀且美觀。于是就去研究了如何使用,其實在移動端使用echarts地圖踩的bug挺多的,總結(jié)如下。 JavaScript API GL賬號和獲取密鑰 1、獲取SHA1:Android平臺云端打包 - 公共測試

    2024年02月11日
    瀏覽(92)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包