";
// 增加左侧控制条
map.addControl(new BMap.NavigationControl());
// 编写自定义函数,创建标注
function addMarker(point, content){
// 创建标注
var marker = new BMap.Marker(point);
map.addOverlay(marker);
var infoWindow = new BMap.InfoWindow(mapBoxShow);
//开启信息窗口
map.openInfoWindow(infoWindow,point);
marker.addEventListener("click", function(){
this.openInfoWindow(infoWindow);
//图片加载完毕重绘infowindow
document.getElementById('imgDemo').onload = function (){
infoWindow.redraw();
}
});
}
var myLocalsearch = new BMap.LocalSearch(
map,
{
onSearchComplete: function(results){
var poi = results.getPoi(0);
map.centerAndZoom(poi.point, 13);
var user_marker = new BMap.Marker(poi.point);
map.addOverlay(user_marker);
addMarker(poi.point, mapBoxShow);
}
}
);
myLocalsearch.search(mapProvince+mapCity+mapDistrict);
//百度地图指定定位
}else{
function initMap() {
var that = this;
$("#"+mapId).addClass("map-hide");
var map = new AMap.Map(mapId, {
zoom: 15, //级别
center: [113.35807, 23.13321] //中心点坐标
});
map.clearMap();
var marker = new AMap.Marker({
map: map,
position: [113.35807, 23.13321]
});
map.plugin("AMap.Geolocation", function () {
// var geolocation = new AMap.Geolocation({
// // 是否使用高精度定位,默认:true
// enableHighAccuracy: true,
// // 设置定位超时时间,默认:无穷大
// timeout: 10000,
// // 定位按钮的停靠位置的偏移量,默认:Pixel(10, 20)
// buttonOffset: new AMap.Pixel(10, 20),
// // 定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
// zoomToAccuracy: true,
// // 定位按钮的排放位置, RB表示右下
// buttonPosition: "RB"
// });
// console.log(geolocation);
var geolocation = new BMap.Geolocation({
// 是否使用高精度定位,默认:true
enableHighAccuracy: true,
// 设置定位超时时间,默认:无穷大
timeout: 10000,
// 定位按钮的停靠位置的偏移量,默认:Pixel(10, 20)
buttonOffset: new AMap.Pixel(10, 20),
// 定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
zoomToAccuracy: true,
// 定位按钮的排放位置, RB表示右下
buttonPosition: "RB"
});
geolocation.getCurrentPosition( function(r){
// console.log(r);
if(this.getStatus() == BMAP_STATUS_SUCCESS){
var mk = new BMap.Marker(r.point);
var myGeo = new BMap.Geocoder();
var address = myGeo.getLocation(new BMap.Point(r.point.lng,r.point.lat), function(rs){
// console.log(MyApp.app.mapCenter);
//console.log(rs);
var addComp = rs.addressComponents;
r.mapprovince = addComp.province;
r.mapcity = addComp.city
r.mapdistrict = addComp.district + addComp.street + addComp.streetNumber;
onComplete(r);
// alert(addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber);
});
}
else {
alert('未知地址('+this.getStatus() + ')');
}
});
function onComplete(data) {
// data是具体的定位信息
$(mapId).empty();
if (mapBox) {
BaiduMaps(data,data.point.lng, data.point.lat);
} else {
$(mapId).empty();
var ggPoint = new BMap.Point(data.point.lng, data.point.lat);
var bm = new BMap.Map(mapId);
bm.centerAndZoom(ggPoint, 15);
bm.addControl(new BMap.NavigationControl());
$("#"+mapId).removeClass("map-hide");
//高德坐标转百度坐标 坐标转换完之后的回调函数
var translateCallback = function (data) {
if (data.status === 0) {
var geoc = new BMap.Geocoder();
var pt = data.points[0];
geoc.getLocation(pt, function (rs) {
var marker = new BMap.Marker(data.points[0]); // 创建标注
bm.addOverlay(marker); // 将标注添加到地图中
bm.centerAndZoom(data.points[0], 15);
bm.addControl(new BMap.NavigationControl());
var opts = {
width: 200, // 信息窗口宽度
height: 100, // 信息窗口高度
title: "地址:", // 信息窗口标题 地址
enableMessage: true //设置允许信息窗发送短息
};
var infoWindow = new BMap.InfoWindow("无", opts); // 创建信息窗口对象
marker.addEventListener("click", function () {
bm.openInfoWindow(infoWindow, data.points[0]); //开启信息窗口
});
});
}
};
var convertor = new BMap.Convertor();
var pointArr = [];
pointArr.push(ggPoint);
convertor.translate(pointArr, 3, 5, translateCallback);
}
}
function onError(error) {
switch(error.code) {
case error.PERMISSION_DENIED:
console.log("用户拒绝对获取地理位置的请求。")
break;
case error.POSITION_UNAVAILABLE:
console.log("位置信息是不可用的。")
break;
case error.TIMEOUT:
console.log("请求用户地理位置超时。")
break;
case error.UNKNOWN_ERROR:
console.log("未知错误。")
break;
}
//console.log(data);
// 定位出错
//alert("定位出错了");
}
});
}
function BaiduMaps(data,x, y) {
var that = this;
$(mapId).empty();
var ggPoint = new BMap.Point(x, y);
var bm = new BMap.Map(mapId);
// 创建地址解析器实例
var myGeo = new BMap.Geocoder();
$("#"+mapId).removeClass("map-hide");
if(mapProvince == ''){
mapProvince = data.mapprovince;
}
if(mapCity == ''){
mapCity = data.mapcity
}
if(mapDistrict == ''){
mapDistrict = data.mapdistrict
}
//console.log(mapProvince ,mapCity ,mapDistrict)
// 将地址解析结果显示在地图上,并调整地图视野
myGeo.getPoint(
mapProvince + mapCity + mapDistrict,
function (point) {
if (point) {
bm.centerAndZoom(point, 16);
bm.addOverlay(new BMap.Marker(point));
var marker = new BMap.Marker(point); // 创建标注
bm.addOverlay(marker); // 将标注添加到地图中
bm.centerAndZoom(point, 15);
bm.addControl(new BMap.NavigationControl());
var opts = {
width: 200, // 信息窗口宽度
height: 100, // 信息窗口高度
title: "地址:", // 信息窗口标题 地址
enableMessage: true //设置允许信息窗发送短息
};
var infoWindow = new BMap.InfoWindow(signAddress, opts); // 创建信息窗口对象
marker.addEventListener("click", function () {
bm.openInfoWindow(infoWindow, point); //开启信息窗口
});
} else {
alert("您选择地址没有解析到结果!");
}
},
mapCity
);
}
initMap();
//百度地图自动定位end
}
})