百度地圖API執行個體教程

來源:互聯網
上載者:User
這幾天比較空閑,就接觸了下 百度地圖API (開發人員中心連結地址:http://developer.baidu.com),發現調用還是挺方便的。只要簡單幾步註冊下,就可以獲得一個Key,就能直接調用(PS:好像1.3版本前的無需註冊擷取key,就能直接調用api)。
  想著能結合到自己的項目中去,那也挺不錯的。看了園子中的幾篇文章,感覺甚好,想自己也動手試試。
在調用百度地圖API的時候,經緯度的擷取必然是關鍵,那麼怎麼樣擷取到經緯度的值呢。這是一個最首要解決的問題。通過查詢資料,看了幾個例子,得知了調用的方法。
  閑話不多,下面就直接給大家介紹下,具體要怎麼調用百度地圖API。

  首先建立一張html頁面。然後引用上API:

 

<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:

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

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

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

<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>

然後,啟動地圖的方法縮小功能,以及地圖的拖拽功能:

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 }));   //右下角,開啟

“BMAP_ANCHOR_BOTTOM_RIGHT”為控制項顯示的位置,表示控制項位於地圖的右下角,可以按照自己的喜歡添加參數值。

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

  好了,地圖的一些基本設定已經添加上了,如果要其他的功能,還可以去通過查看百度地圖API的Demo來擷取調用的方法(http://developer.baidu.com/map/jsdemo.htm)。

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

<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); } 
 

好了,準系統都實現了,下面就給大家提供完整的代碼吧。  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.