<script type="text/javascript" src="//api.map.baidu.com/api?v=2.0&ak=xx"></script>
<div id="l-map"></div>
<script>
// 百度地图API功能
var map = new BMap.Map("l-map", {
enableMapClick: false
});
map.centerAndZoom("杭州市", 11);
map.enableScrollWheelZoom(true);
var myGeo = new BMap.Geocoder();
// 将地址解析结果显示在地图上,并调整地图视野
map.addEventListener("click", function(e) {
map.clearOverlays();
var pt = e.point;
map.addOverlay(new BMap.Marker(pt));
var new_point = new BMap.Point(pt.lng, pt.lat);
var gc = new BMap.Geocoder(); //初始化,Geocoder类
gc.getLocation(new_point, function (rs) { //getLocation函数用来解析地址信息,分别返回省市区街等
var addComp = rs.addressComponents,
province = addComp.province,//获取省份
city = addComp.city,//获取城市
district = addComp.district,//区
street = addComp.street,//街
streetNumber = addComp.streetNumber ? addComp.streetNumber: "";
location_name = street + streetNumber;
document.getElementById("addr-show").value=location_name;
});
});
var lon,lat;
justify_location();
function justify_location() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(geoSuccess, geoError);
// 支持
console.log("支持地理位置接口");
} else {
// 不支持
console.log("不支持地理位置接口");
}
}
function geoSuccess(event) {
lon = event.coords.longitude;
lat = event.coords.latitude;
var point = new BMap.Point(lon,lat);
map.centerAndZoom(point,12);
map.addOverlay(new BMap.Marker(point)); //添加标注
myGeo.getLocation(point, function (rs) { //getLocation函数用来解析地址信息,分别返回省市区街等
console.log( rs.addressComponents);
var addComp = rs.addressComponents,
province = addComp.province,//获取省份
city = addComp.city,//获取城市
district = addComp.district,//区
street = addComp.street,//街
streetNumber = addComp.streetNumber ? addComp.streetNumber: "";
location_name = street + streetNumber;
document.getElementById("addr-show").value=location_name;
});
}
//拒绝授权
function geoError(error) {
console.log(error)
console.log("Error code " + error.code + ". " + error.message);
switch (error.code) {
case error.PERMISSION_DENIED:
alert("定位失败,用户拒绝请求地理定位");
break;
case error.POSITION_UNAVAILABLE:
alert("定位失败,位置信息是不可用");
break;
case error.TIMEOUT:
alert("定位失败,请求获取用户位置超时");
break;
case error.UNKNOWN_ERROR:
alert("定位失败,定位系统失效");
break;
}
}
$("#dw_button").on('click', function() {
if (!$("#citys").val() || !$("#qus").val()) {
return alert("请选择区域");
}
if (!$("#addr-show").val()) {
return alert("输入详细地址后定位");
}
map.clearOverlays(); //清除地图上所有覆盖物
function myFun() {
if (local.getResults().getPoi(0)) {
var pp = local.getResults().getPoi(0).point; //获取第一个智能搜索的结果
map.centerAndZoom(pp, 18);
map.addOverlay(new BMap.Marker(pp)); //添加标注
} else {
alert("无法解析地址,请完善详细地址信息或者手动点击地图选择");
}
}
var local = new BMap.LocalSearch(map, { //智能搜索
onSearchComplete: myFun
});
local.search($("#citys :selected").text() + $("#qus :selected").text() + $("#addr-show").val());
});
</script>
百度js API 自动定位示例