百度地圖API簡單應用——1.根據地址查詢經緯度

這幾天比較空閒,就接觸了下百度地圖的API(開發者中心連接地址:http://developer.baidu.com),發現調用仍是挺方便的。只要簡單幾步註冊下,就能夠得到一個Key,就能直接調用(PS:好像1.3版本前的無需註冊獲取key,就能直接調用api)。
  想着能結合到本身的項目中去,那也挺不錯的。看了園子中的幾篇文章,感受甚好,想本身也動手試試。
在調用百度地圖API的時候,經緯度的獲取必然是關鍵,那麼怎麼樣獲取到經緯度的值呢?這是一個最首要解決的問題。
經過查詢資料,看了幾個例子,得知了調用的方法(感謝與時俱進的實例,給予很大的幫助)。站着巨人的肩膀上,就能比較快的實現功能。
  閒話很少,下面就直接給你們介紹下,具體要怎麼調用百度地圖API。
  首先新建一張html頁面。而後引用上API:javascript

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>根據地址查詢經緯度</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.3"></script>
</head>
<body>
</body>

這裏我直接引用了1.3的版本,要引用1.3版本以上的話要加上key:html

<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.5&ak=您的密鑰"></script>

如此幾行代碼就成功引用了百度地圖API。接下來就是要調用他的一些方法了:java

首先在body中添加一個div,用來加載地圖用,簡單寫下樣式。api

<div id="container" 
    style="position: absolute;
        margin-top:30px; 
        width: 730px; 
        height: 590px; 
        top: 50; 
        border: 1px solid gray;
        overflow:hidden;">
</div>

而後是寫javascript代碼,來調用api中的方法。首先建立一個地圖,而後設置地圖顯示的中心地圖,及顯示的放大倍數:動畫

<script type="text/javascript">
    var map = new BMap.Map("container");
    map.centerAndZoom("寧波", 12);
</script>

而後,啓動地圖的方法縮小功能,以及地圖的拖拽功能:ui

map.enableScrollWheelZoom();    //啓用滾輪放大縮小,默認禁用
map.enableContinuousZoom();    //啓用地圖慣性拖拽,默認禁用

爲了使用地圖更加方便,咱們還能夠添加上縮放的平移控件,以及地圖的縮略圖控件,並設置他要顯示的位置:this

map.addControl(new BMap.NavigationControl());  //添加默認縮放平移控件
map.addControl(new BMap.OverviewMapControl()); //添加默認縮略地圖控件
map.addControl(new BMap.OverviewMapControl({ isOpen: true, anchor: BMAP_ANCHOR_BOTTOM_RIGHT }));   //右下角,打開

「BMAP_ANCHOR_BOTTOM_RIGHT」爲控件顯示的位置,表示控件位於地圖的右下角,能夠按照本身的喜歡添加參數值。

主要有一下四種:
BMAP_ANCHOR_TOP_LEFT 表示控件定位於地圖的左上角。
BMAP_ANCHOR_TOP_RIGHT 表示控件定位於地圖的右上角。
BMAP_ANCHOR_BOTTOM_LEFT 表示控件定位於地圖的左下角。
BMAP_ANCHOR_BOTTOM_RIGHT 表示控件定位於地圖的右下角。spa

  好了,地圖的一些基本設置已經添加上了,若是要其餘的功能,還能夠去經過查看百度地圖API的Demo來獲取調用的方法(http://developer.baidu.com/map/jsdemo.htm)。code

  接下來就是要是實現咱們的主要功能了。
首先,先在頁面上添加兩個文本框,和一個查詢按鈕。第一個文本框是用來輸入要查詢的地址,第二個文本框是用來顯示查詢所得的經緯度。html代碼就所有寫完了。orm

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>根據地址查詢經緯度</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.3"></script>
</head>
<body style="background:#CBE1FF">
    <div style="width:730px;margin:auto;">   
        要查詢的地址:<input id="text_" type="text" value="寧波天一廣場" style="margin-right:100px;"/>
        查詢結果(經緯度):<input id="result_" type="text" />
        <input type="button" value="查詢" onclick="searchByStationName();"/>
        <div id="container" 
            style="position: absolute;
                margin-top:30px; 
                width: 730px; 
                height: 590px; 
                top: 50; 
                border: 1px solid gray;
                overflow:hidden;">
        </div>
    </div>
</body>

 接下來就是要構建一個查詢:

var localSearch = new BMap.LocalSearch(map);
localSearch.enableAutoViewport(); //容許自動調節窗體大小

而後咱們就能夠開始作最關鍵的一步了,就是獲取地址的具體經緯度:

function searchByStationName() {
      var keyword = document.getElementById("text_").value;
      localSearch.setSearchCompleteCallback(function (searchResult) {
            var poi = searchResult.getPoi(0);
            document.getElementById("result_").value = poi.point.lng + "," + poi.point.lat; //獲取經度和緯度,將結果顯示在文本框中
            map.centerAndZoom(poi.point, 13);
      });
      localSearch.search(keyword);
}

爲了使效果更加的明顯,咱們還能夠添加標註點到咱們要查詢的地址上。因而,將上面的代碼能夠進一步改爲:

function searchByStationName() {
    map.clearOverlays();//清空原來的標註
    var keyword = document.getElementById("text_").value;
    localSearch.setSearchCompleteCallback(function (searchResult) {
        var poi = searchResult.getPoi(0);
        document.getElementById("result_").value = poi.point.lng + "," + poi.point.lat;
        map.centerAndZoom(poi.point, 13);
        var marker = new BMap.Marker(new BMap.Point(poi.point.lng, poi.point.lat));  // 建立標註,爲要查詢的地址對應的經緯度
        map.addOverlay(marker);
    });
    localSearch.search(keyword);
}

咱們也能夠在標註上添加詳情信息,使點擊後能看到具體信息。因而,再一次修改代碼:

function searchByStationName() {
    map.clearOverlays();//清空原來的標註
    var keyword = document.getElementById("text_").value;
    localSearch.setSearchCompleteCallback(function (searchResult) {
        var poi = searchResult.getPoi(0);
        document.getElementById("result_").value = poi.point.lng + "," + poi.point.lat;
        map.centerAndZoom(poi.point, 13);
        var marker = new BMap.Marker(new BMap.Point(poi.point.lng, poi.point.lat));  // 建立標註,爲要查詢的地址對應的經緯度
map.addOverlay(marker); var content = document.getElementById("text_").value + "<br/><br/>經度:" + poi.point.lng + "<br/>緯度:" + poi.point.lat; var infoWindow = new BMap.InfoWindow("<p style='font-size:14px;'>" + content + "</p>"); marker.addEventListener("click", function () { this.openInfoWindow(infoWindow); }); // marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳動的動畫 }); localSearch.search(keyword); }

好了,基本功能都實現了,下面就給你們提供完整的代碼吧。

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>根據地址查詢經緯度</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.5&ak=你的key"></script>
</head>
<body style="background:#CBE1FF">
    <div style="width:730px;margin:auto;">   
        要查詢的地址:<input id="text_" type="text" value="青島" style="margin-right:100px;"/>
        查詢結果(經緯度):<input id="result_" type="text" />
        <input type="button" value="查詢" onclick="searchByStationName();"/>
        <div id="container" 
            style="position: absolute;
                margin-top:30px; 
                width: 730px; 
                height: 590px; 
                top: 50; 
                border: 1px solid gray;
                overflow:hidden;">
        </div>
    </div>
</body>
<script type="text/javascript">
    var map = new BMap.Map("container");
    map.centerAndZoom("青島", 12);
    map.enableScrollWheelZoom();    //啓用滾輪放大縮小,默認禁用
    map.enableContinuousZoom();    //啓用地圖慣性拖拽,默認禁用

    map.addControl(new BMap.NavigationControl());  //添加默認縮放平移控件
    map.addControl(new BMap.OverviewMapControl()); //添加默認縮略地圖控件
    map.addControl(new BMap.OverviewMapControl({ isOpen: true, anchor: BMAP_ANCHOR_BOTTOM_RIGHT }));   //右下角,打開

    var localSearch = new BMap.LocalSearch(map);
    localSearch.enableAutoViewport(); //容許自動調節窗體大小
function searchByStationName() {
    map.clearOverlays();//清空原來的標註
    var keyword = document.getElementById("text_").value;
    localSearch.setSearchCompleteCallback(function (searchResult) {
        var poi = searchResult.getPoi(0);
        document.getElementById("result_").value = poi.point.lng + "," + poi.point.lat;
        map.centerAndZoom(poi.point, 13);
        var marker = new BMap.Marker(new BMap.Point(poi.point.lng, poi.point.lat));  // 建立標註,爲要查詢的地方對應的經緯度
        map.addOverlay(marker);
        var content = document.getElementById("text_").value + "<br/><br/>經度:" + poi.point.lng + "<br/>緯度:" + poi.point.lat;
        var infoWindow = new BMap.InfoWindow("<p style='font-size:14px;'>" + content + "</p>");
        marker.addEventListener("click", function () { this.openInfoWindow(infoWindow); });
        // marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳動的動畫
    });
    localSearch.search(keyword);
} 
</script>
</html>

但願對剛接觸百度地圖API的朋友有必定幫助。

相關文章
相關標籤/搜索