網站調用百度地圖 根據地址查詢經緯度


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

簡單幾步注冊獲得一個ak,就能直接調用(PS:好像1.3版本前的無需注冊獲取ak,就能直接調用api)。

閑話不多,下面就直接給大家介紹下,具體要怎么調用百度地圖API。
首先新建一個html頁面。然后引用api

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>網站引用百度地圖 根據地址查詢經緯度</title>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.3"></script>
<!--<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=gVNM7VnRHRcZkOLZTeZW6oEf"></script>-->

</head>

<body style="background:#CBE1FF">
</body>
</html>

這里我直接引用了1.3的版本,要引用1.3版本以上的話要加上ak

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

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

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

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

2.然后寫javascript代碼,調用api中的方法。首先創建一個地圖,設置地圖顯示的中心地圖,及顯示的放大倍數

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

3.啟用地圖的放大縮小功能,以及地圖的拖拽功能

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

4.為了使用地圖更加方便,我們還可以添加縮放的平移控件,以及地圖的縮略圖控件,並設置控件顯示的位置

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

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>根據地址查詢經緯度</title>
<!--<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.3"></script>-->
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=gVNM7VnRHRcZkOLZTeZW6oEf"></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>
</html>

6.接下來要構建一個查詢

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

7.然后我們就開始做最關鍵的一步了,獲取地址的具體經緯度

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

8.為了使效果更加明顯,我們還可以添加標注點到查詢的地址上。於是,上面的代碼可以改成

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

9.還可以在標注上添加詳情信息,使點擊后能看到具體信息。於是,再一次修改代碼

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

10.好了,基本功能都實現了,下面是完整的代碼

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>根據地址查詢經緯度</title>
<!--<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.3"></script>-->
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=gVNM7VnRHRcZkOLZTeZW6oEf"></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>
<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);
}
searchByStationName();
</script>
</body>
</html>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM