1.引入百度地圖腳本
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=53oVIOgmSIejwV7EfphPgTynOZbIiVYu">
2.定義HTML容器
<div id="container"></div>
3.js腳本代碼
<script>
var map = new BMap.Map("container");
var point = new BMap.Point(114.025973657, 22.5460535462);
map.centerAndZoom(point, 15);
map.enableScrollWheelZoom(true);
// 彈窗
var opts = {
width: 270, // 信息窗口寬度
height: 100, // 信息窗口高度
enableMessage: true //設置允許信息窗發送短息
};
// 彈窗點擊事件
function openInfo(content, e) {
var p = e.target;
var point = new BMap.Point(p.getPosition().lng, p.getPosition().lat);
// 創建信息窗口對象
var infoWindow = new BMap.InfoWindow(`<div>名稱:<span>`+content.name+`</span></div><div>道路:<span>`+content.road+`</span></div><div>里程數:<span>`+content.milage+`</span></div>`, opts);
//開啟信息窗口
map.openInfoWindow(infoWindow, point);
}
searchByStationName1()
var from;
var to;
//定義方法
function searchByStationName1() {
var startAddrr = "深圳北站";
var localSearch = new BMap.LocalSearch(map);
localSearch.setSearchCompleteCallback(function (searchResult) {
var poi = searchResult.getPoi(0); //獲得起點經緯度坐標
if (poi != null) {
//判斷地名是否存在
from = poi.point;
searchByStationName2();
} else {
alert("請輸入正確的地名!");
}
});
localSearch.search(startAddrr);
}
function searchByStationName2() {
var endAddrr = "東部華僑城";
var localSearch = new BMap.LocalSearch(map);
localSearch.setSearchCompleteCallback(function (searchResult) {
var poi = searchResult.getPoi(0); //獲得目的地經緯度坐標
if (poi != null) {
//判斷目的地是否存在
to = poi.point;
run();
} else {
alert("請輸入正確的地名!");
}
});
localSearch.search(endAddrr);
}
function run() {
// map.clearOverlays(); // 清除地圖上所有的覆蓋物
var walking = new BMap.WalkingRoute(map); // 創建步行實例
walking.search(this.from, this.to); // 第一個步行搜索
walking.setSearchCompleteCallback(function () {
console.log("completeCallback start!");
var pts = walking
.getResults()
.getPlan(0)
.getRoute(0)
.getPath(); // 通過步行實例,獲得一系列點的數組
var polyline = new BMap.Polyline(pts);
map.addOverlay(polyline);
console.log("pollyline!", polyline);
var m1 = new BMap.Marker(from); // 創建2個marker
var m2 = new BMap.Marker(to);
map.addOverlay(m1);
map.addOverlay(m2);
m1.addEventListener("click", function (e) {
openInfo({name: "深圳北",milage: "55km",road: "深圳北-東部華僑城"}, e)
});
m2.addEventListener("click", function (e) {
openInfo({name: "深圳北",milage: "55km",road: "深圳北-東部華僑城"}, e)
});
var lab1 = new BMap.Label("起點", {
position: from
}); // 創建2個label
var lab2 = new BMap.Label("終點", {
position: to
});
map.addOverlay(lab1);
map.addOverlay(lab2);
console.log("setTimeout!");
setTimeout(function () {
map.setViewport([from, to]); // 調整到最佳視野
}, 1000);
});
}
</script>
全部代碼
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=53oVIOgmSIejwV7EfphPgTynOZbIiVYu">
</script>
<title>Document</title>
</head>
<body>
<style>
#container {
width: 100%;
height: 500px;
}
</style>
<div id="container"></div>
<div id="info"></div>
<script>
var map = new BMap.Map("container");
var point = new BMap.Point(114.025973657, 22.5460535462);
map.centerAndZoom(point, 15);
map.enableScrollWheelZoom(true);
// 彈窗
var opts = {
width: 270, // 信息窗口寬度
height: 100, // 信息窗口高度
enableMessage: true //設置允許信息窗發送短息
};
// 彈窗點擊事件
function openInfo(content, e) {
var p = e.target;
var point = new BMap.Point(p.getPosition().lng, p.getPosition().lat);
// 創建信息窗口對象
var infoWindow = new BMap.InfoWindow(`<div>名稱:<span>`+content.name+`</span></div><div>道路:<span>`+content.road+`</span></div><div>里程數:<span>`+content.milage+`</span></div>`, opts);
//開啟信息窗口
map.openInfoWindow(infoWindow, point);
}
searchByStationName1()
var from;
var to;
//定義方法
function searchByStationName1() {
var startAddrr = "深圳北站";
var localSearch = new BMap.LocalSearch(map);
localSearch.setSearchCompleteCallback(function (searchResult) {
var poi = searchResult.getPoi(0); //獲得起點經緯度坐標
if (poi != null) {
//判斷地名是否存在
from = poi.point;
searchByStationName2();
} else {
alert("請輸入正確的地名!");
}
});
localSearch.search(startAddrr);
}
function searchByStationName2() {
var endAddrr = "東部華僑城";
var localSearch = new BMap.LocalSearch(map);
localSearch.setSearchCompleteCallback(function (searchResult) {
var poi = searchResult.getPoi(0); //獲得目的地經緯度坐標
if (poi != null) {
//判斷目的地是否存在
to = poi.point;
run();
} else {
alert("請輸入正確的地名!");
}
});
localSearch.search(endAddrr);
}
function run() {
// map.clearOverlays(); // 清除地圖上所有的覆蓋物
var walking = new BMap.WalkingRoute(map); // 創建步行實例
walking.search(this.from, this.to); // 第一個步行搜索
walking.setSearchCompleteCallback(function () {
console.log("completeCallback start!");
var pts = walking
.getResults()
.getPlan(0)
.getRoute(0)
.getPath(); // 通過步行實例,獲得一系列點的數組
var polyline = new BMap.Polyline(pts);
map.addOverlay(polyline);
console.log("pollyline!", polyline);
var m1 = new BMap.Marker(from); // 創建2個marker
var m2 = new BMap.Marker(to);
map.addOverlay(m1);
map.addOverlay(m2);
m1.addEventListener("click", function (e) {
openInfo({name: "深圳北",milage: "55km",road: "深圳北-東部華僑城"}, e)
});
m2.addEventListener("click", function (e) {
openInfo({name: "深圳北",milage: "55km",road: "深圳北-東部華僑城"}, e)
});
var lab1 = new BMap.Label("起點", {
position: from
}); // 創建2個label
var lab2 = new BMap.Label("終點", {
position: to
});
map.addOverlay(lab1);
map.addOverlay(lab2);
console.log("setTimeout!");
setTimeout(function () {
map.setViewport([from, to]); // 調整到最佳視野
}, 1000);
});
}
</script>
</body>
</html>
