这里是另外一篇
百度地图添加SVG矢量图标
百度地图接口版本不同,里面的函数有些区别,我用的是以下版本,这个版本创建百度地图需要用
map = new BMapGL.Map(“allmap”);
<script src="//api.map.baidu.com/api?type=webgl&v=2.0&ak=秘钥"></script>
另一个版本也可以用,但是以下版本创建地图是var map = new BMap.Map(“allmap”);
<script type="text/javascript" src="//api.map.baidu.com/api?v=3.0&ak=秘钥"></script>
目前来说两个地图所用的函数都差不多,但是在创建矢量图标的时候会有区别。所以我现在的标注图标是服务器取出来的一张图片,而不是svg
这份地图中包括下面几个知识点
- 百度地图添加多个标注图标定位点
- 百度地图给多个标注添加监听(左击和右击标注监听)
- 百度地图Marker标注点上叠加图片
- 百度地图设置地图风格
- 百度地图获取地图的地理位置
下面地图用到了两个版本的api,把以上两个都引入
<div id="allmap" ></div>
// 地图
function getMap() {
$
.ajax({
url : '/productMonitor/getProductPosition',
type : 'get',
dataType : 'json',
success : function(data) {
// 百度地图API功能
map = new BMapGL.Map("allmap");
var point = new BMapGL.Point(119.3, 26.05);
map.centerAndZoom(point, 13);
map.enableScrollWheelZoom(true);
//设置地图样式
map.setMapStyleV2({
styleJson : mapStyleBrown
});
//样式结束
var pointArray = new Array();
var positionList = data.positionList;
if (positionList.length > 0) {
for (var i = 0; i < positionList.length; i++) {
var position = positionList[i];
// 经度
var longitude = position.longitude;
// 纬度
var latitude = position.latitude;
var point = new BMapGL.Point(longitude, latitude);
// 创建标注图标
var aa = "";
if (position.login == 0) {
aa = "/img/productMonitor/lixian.png";
} else if (position.login == 1) {
aa = "/img/productMonitor/zaixian.png";
} else {
aa = "/img/productMonitor/guzhang.png";
}
var myIcon = new BMapGL.Icon(aa, new BMapGL.Size(
40, 40));
var marker = new BMapGL.Marker(point, {
icon : myIcon,
});
map.addOverlay(marker);
//标注结束
//给标注添加一张图片,其实就是自定义覆盖物,创建了一个div,背景图片设置成我们自己的图片,然后设置边角圆化成圆形,再调整div的位置就叠加上去了。
function ComplexCustomOverlay(point) {
this._point = point;
}
ComplexCustomOverlay.prototype = new BMapGL.Overlay();
ComplexCustomOverlay.prototype.initialize = function(
map) {
this._map = map;
var arrow = this._arrow = document
.createElement("div");
var s = "/img/productMonitor/"
+ position.productType + ".png";
arrow.style.background = "url(" + s
+ ") no-repeat center";
arrow.style.position = "absolute";
arrow.style.width = "29px";
arrow.style.height = "29px";
arrow.style.borderRadius = "3px";
arrow.style.backgroundSize = "contain";
map.getPanes().labelPane.appendChild(arrow);
return arrow;
}
ComplexCustomOverlay.prototype.draw = function() {
var map = this._map;
var pixel = map
.pointToOverlayPixel(this._point);
this._arrow.style.left = pixel.x - 14 + 'px';
this._arrow.style.top = pixel.y - 16 + "px";
}
var myCompOverlay = new ComplexCustomOverlay(point);
map.addOverlay(myCompOverlay);
//给标注添加一张图片结束
// 标注监听
pointArray[i] = new BMapGL.Point(longitude,
latitude);
var clickFunction = function(i) {
return function(event) {
//这个是我自己的一个方法
getOne(i);
};
}(position.vin);
var rightclickFunction = function(v1,v2) {
return function(event) {
//这个是我自己的一个方法,获取地理位置
getStatus(v1,v2);
};
}(position.longitude,position.latitude);
marker.addEventListener("click", clickFunction);
marker.addEventListener('rightclick',
rightclickFunction);
// 标注监听结束
// 编写自定义函数,创建标签
var label = new BMapGL.Label(position.vin, {
offset : new BMapGL.Size(5, -35)
});
label.setStyle({
color : "#0d7e84e0",
fontSize : "14px",
backgroundColor : "#0b1b2bff",
border : "0",
fontWeight : "bold",
borderRadius : "3px",
});
marker.setLabel(label);
// 标签结束
// 让所有点在视野范围内,不设置的话,
//那么地图的大小会是前面设置的中心点和缩放倍数,
//那么有的标注会看不到,需要你缩小地图才能看到
map.setViewport(pointArray);
}
}
},
error : function() {
alert('服务器超时,请重试!');
}
});
}
function getStatus(longitude,latitude) {
// 根据坐标得到地址描述
var myGeo = new BMap.Geocoder({
extensions_town : true
});
myGeo.getLocation(new BMap.Point(longitude, latitude),
function(result) {
if (result) {
alert(result.address);
}
});
}
var mapStyleBrown = [ {
"featureType" : "land",
"elementType" : "geometry",
"stylers" : {
"color" : "#0b1b2bff"
}
}, {
"featureType" : "water",
"elementType" : "geometry",
"stylers" : {
"color" : "#1c3345ff"
}
}, {
"featureType" : "water",
"elementType" : "labels.text.fill",
"stylers" : {
"color" : "#ffffff66",
"weight" : 10
}
}, {
"featureType" : "water",
"elementType" : "labels.text.stroke",
"stylers" : {
"color" : "#ffffff1a"
}
}, {
"featureType" : "green",
"elementType" : "geometry",
"stylers" : {
"color" : "#1422151a"
}
}, {
"featureType" : "building",
"elementType" : "geometry.fill",
"stylers" : {
"color" : "#4a90e21a"
}
}, {
"featureType" : "building",
"elementType" : "geometry.stroke",
"stylers" : {
"color" : "#ffffff0"
}
}, {
"featureType" : "manmade",
"elementType" : "geometry",
"stylers" : {
"color" : "#12223d33"
}
}, {
"featureType" : "manmade",
"elementType" : "labels.text.fill",
"stylers" : {
"color" : "#ffffff26"
}
}, {
"featureType" : "manmade",
"elementType" : "labels.text.stroke",
"stylers" : {
"color" : "#ffffff0"
}
}, {
"featureType" : "subwaystation",
"elementType" : "geometry",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "education",
"elementType" : "geometry",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "education",
"elementType" : "labels.text.fill",
"stylers" : {
"color" : "#ffffff26",
"weight" : 10
}
}, {
"featureType" : "education",
"elementType" : "labels.text.stroke",
"stylers" : {
"color" : "#ffffff0"
}
}, {
"featureType" : "medical",
"elementType" : "labels",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "medical",
"elementType" : "geometry",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "scenicspots",
"elementType" : "geometry",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "scenicspots",
"elementType" : "labels",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "entertainment",
"elementType" : "geometry",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "estate",
"elementType" : "geometry",
"stylers" : {
"color" : "#4a90e226"
}
}, {
"featureType" : "shopping",
"elementType" : "geometry",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "transportation",
"elementType" : "geometry",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "transportation",
"elementType" : "labels",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "highway",
"elementType" : "geometry.fill",
"stylers" : {
"color" : "#1b344eff"
}
}, {
"featureType" : "highway",
"elementType" : "geometry.stroke",
"stylers" : {
"color" : "#ffffff0"
}
}, {
"featureType" : "nationalway",
"elementType" : "geometry.fill",
"stylers" : {
"color" : "#1b344eff"
}
}, {
"featureType" : "nationalway",
"elementType" : "geometry.stroke",
"stylers" : {
"color" : "#ffffff0"
}
}, {
"featureType" : "provincialway",
"elementType" : "geometry.fill",
"stylers" : {
"color" : "#1b344eff"
}
}, {
"featureType" : "provincialway",
"elementType" : "geometry.stroke",
"stylers" : {
"color" : "#ffffff00"
}
}, {
"featureType" : "cityhighway",
"elementType" : "geometry.fill",
"stylers" : {
"color" : "#1b344eff"
}
}, {
"featureType" : "cityhighway",
"elementType" : "geometry.stroke",
"stylers" : {
"color" : "#ffffff0"
}
}, {
"featureType" : "arterial",
"elementType" : "geometry.fill",
"stylers" : {
"color" : "#1b344eff"
}
}, {
"featureType" : "arterial",
"elementType" : "geometry.stroke",
"stylers" : {
"color" : "#ffffff0"
}
}, {
"featureType" : "tertiaryway",
"elementType" : "geometry.fill",
"stylers" : {
"color" : "#1b344eff"
}
}, {
"featureType" : "tertiaryway",
"elementType" : "geometry.stroke",
"stylers" : {
"color" : "#ffffff00"
}
}, {
"featureType" : "fourlevelway",
"elementType" : "geometry.fill",
"stylers" : {
"color" : "#1b344eff"
}
}, {
"featureType" : "fourlevelway",
"elementType" : "geometry.stroke",
"stylers" : {
"color" : "#ffffff00"
}
}, {
"featureType" : "local",
"elementType" : "geometry.fill",
"stylers" : {
"color" : "#1b344eff"
}
}, {
"featureType" : "local",
"elementType" : "geometry.stroke",
"stylers" : {
"color" : "#ffffff00"
}
}, {
"featureType" : "scenicspotsway",
"elementType" : "geometry.fill",
"stylers" : {
"color" : "#1b344eff"
}
}, {
"featureType" : "scenicspotsway",
"elementType" : "geometry.stroke",
"stylers" : {
"color" : "#ffffff0"
}
}, {
"featureType" : "universityway",
"elementType" : "geometry.fill",
"stylers" : {
"color" : "#1b344eff"
}
}, {
"featureType" : "universityway",
"elementType" : "geometry.stroke",
"stylers" : {
"color" : "#ffffff0"
}
}, {
"featureType" : "vacationway",
"elementType" : "geometry.fill",
"stylers" : {
"color" : "#1b344eff"
}
}, {
"featureType" : "vacationway",
"elementType" : "geometry.stroke",
"stylers" : {
"color" : "#ffffff0"
}
}, {
"featureType" : "railway",
"elementType" : "geometry",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "subway",
"elementType" : "geometry",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "highwaysign",
"elementType" : "labels",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "highwaysign",
"elementType" : "labels.icon",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "highway",
"elementType" : "labels.text.fill",
"stylers" : {
"color" : "#4a90e2ff",
"weight" : 10
}
}, {
"featureType" : "subwaylabel",
"elementType" : "labels",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "subwaylabel",
"elementType" : "labels.icon",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "tertiarywaysign",
"elementType" : "labels",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "tertiarywaysign",
"elementType" : "labels.icon",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "provincialwaysign",
"elementType" : "labels",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "provincialwaysign",
"elementType" : "labels.icon",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "nationalwaysign",
"elementType" : "labels",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "nationalwaysign",
"elementType" : "labels.icon",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "highwaysign",
"elementType" : "labels.text.fill",
"stylers" : {
"weight" : 10
}
}, {
"featureType" : "nationalwaysign",
"elementType" : "labels.text.fill",
"stylers" : {
"weight" : 10
}
}, {
"featureType" : "provincialwaysign",
"elementType" : "labels.text.fill",
"stylers" : {
"weight" : 10
}
}, {
"featureType" : "highway",
"elementType" : "labels.text.stroke",
"stylers" : {
"color" : "#ffffffa"
}
}, {
"featureType" : "nationalway",
"elementType" : "labels.text.fill",
"stylers" : {
"color" : "#4a90e2ff",
"weight" : 10
}
}, {
"featureType" : "nationalway",
"elementType" : "labels.text.stroke",
"stylers" : {
"color" : "#ffffff1a"
}
}, {
"featureType" : "provincialway",
"elementType" : "labels.text.fill",
"stylers" : {
"color" : "#4a90e2ff",
"weight" : 10
}
}, {
"featureType" : "provincialway",
"elementType" : "labels.text.stroke",
"stylers" : {
"color" : "#ffffff1a"
}
}, {
"featureType" : "cityhighway",
"elementType" : "labels.text.fill",
"stylers" : {
"color" : "#4a90e2ff",
"weight" : 10
}
}, {
"featureType" : "cityhighway",
"elementType" : "labels.text.stroke",
"stylers" : {
"color" : "#ffffff1a"
}
}, {
"featureType" : "arterial",
"elementType" : "labels.text.fill",
"stylers" : {
"color" : "#4a90e2ff",
"weight" : 10
}
}, {
"featureType" : "arterial",
"elementType" : "labels.text.stroke",
"stylers" : {
"color" : "#ffffff1a"
}
}, {
"featureType" : "arterial",
"elementType" : "labels.icon",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "tertiaryway",
"elementType" : "labels.text.fill",
"stylers" : {
"color" : "#4a90e2ff",
"weight" : 10
}
}, {
"featureType" : "tertiaryway",
"elementType" : "labels.text.stroke",
"stylers" : {
"color" : "#ffffff1a"
}
}, {
"featureType" : "tertiaryway",
"elementType" : "labels.icon",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "fourlevelway",
"elementType" : "labels.text.fill",
"stylers" : {
"color" : "#4a90e2ff",
"weight" : 10
}
}, {
"featureType" : "fourlevelway",
"elementType" : "labels.text.stroke",
"stylers" : {
"color" : "#ffffff1a"
}
}, {
"featureType" : "fourlevelway",
"elementType" : "labels.icon",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "local",
"elementType" : "labels.text.fill",
"stylers" : {
"color" : "#4a90e2ff",
"weight" : 10
}
}, {
"featureType" : "local",
"elementType" : "labels.text.stroke",
"stylers" : {
"color" : "#ffffff1a"
}
}, {
"featureType" : "local",
"elementType" : "labels.icon",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "airportlabel",
"elementType" : "labels",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "airportlabel",
"elementType" : "labels.icon",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "scenicspotslabel",
"elementType" : "labels",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "scenicspotslabel",
"elementType" : "labels.icon",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "educationlabel",
"elementType" : "labels.text.fill",
"stylers" : {
"color" : "#4a90e240"
}
}, {
"featureType" : "educationlabel",
"elementType" : "labels.icon",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "educationlabel",
"elementType" : "labels.text.stroke",
"stylers" : {
"color" : "#ffffff0"
}
}, {
"featureType" : "medicallabel",
"elementType" : "labels",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "medicallabel",
"elementType" : "labels.icon",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "entertainmentlabel",
"elementType" : "labels",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "entertainmentlabel",
"elementType" : "labels.icon",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "estatelabel",
"elementType" : "labels.text.fill",
"stylers" : {
"color" : "#4a90e299"
}
}, {
"featureType" : "estatelabel",
"elementType" : "labels.text.stroke",
"stylers" : {
"color" : "#ffffff00"
}
}, {
"featureType" : "estatelabel",
"elementType" : "labels.icon",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "businesstowerlabel",
"elementType" : "labels",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "businesstowerlabel",
"elementType" : "labels.icon",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "companylabel",
"elementType" : "labels",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "companylabel",
"elementType" : "labels.icon",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "governmentlabel",
"elementType" : "labels.text.fill",
"stylers" : {
"color" : "#4a90e266"
}
}, {
"featureType" : "governmentlabel",
"elementType" : "labels.text.stroke",
"stylers" : {
"color" : "#ffffff0"
}
}, {
"featureType" : "governmentlabel",
"elementType" : "labels.icon",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "poilabel",
"elementType" : "labels",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "poilabel",
"elementType" : "labels.icon",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "restaurantlabel",
"elementType" : "labels",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "restaurantlabel",
"elementType" : "labels.icon",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "hotellabel",
"elementType" : "labels",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "hotellabel",
"elementType" : "labels.icon",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "shoppinglabel",
"elementType" : "labels",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "shoppinglabel",
"elementType" : "labels.icon",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "carservicelabel",
"elementType" : "labels",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "carservicelabel",
"elementType" : "labels.icon",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "lifeservicelabel",
"elementType" : "labels",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "lifeservicelabel",
"elementType" : "labels.icon",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "transportationlabel",
"elementType" : "labels",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "transportationlabel",
"elementType" : "labels.icon",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "financelabel",
"elementType" : "labels",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "financelabel",
"elementType" : "labels.icon",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "continent",
"elementType" : "labels.text.fill",
"stylers" : {
"color" : "#333333ff"
}
}, {
"featureType" : "continent",
"elementType" : "labels.text.stroke",
"stylers" : {
"color" : "#ffffffff"
}
}, {
"featureType" : "city",
"elementType" : "labels.text.fill",
"stylers" : {
"color" : "#4a90e280"
}
}, {
"featureType" : "city",
"elementType" : "labels.text.stroke",
"stylers" : {
"color" : "#ffffff1a"
}
}, {
"featureType" : "city",
"elementType" : "labels.icon",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "district",
"elementType" : "labels",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "town",
"elementType" : "labels.text.fill",
"stylers" : {
"color" : "#4a90e280"
}
}, {
"featureType" : "town",
"elementType" : "labels.text.stroke",
"stylers" : {
"color" : "#ffffff0"
}
}, {
"featureType" : "village",
"elementType" : "labels.text.fill",
"stylers" : {
"color" : "#4a90e280"
}
}, {
"featureType" : "village",
"elementType" : "labels.text.stroke",
"stylers" : {
"color" : "#ffffff00"
}
}, {
"featureType" : "educationlabel",
"elementType" : "labels.text",
"stylers" : {
"fontsize" : 28
}
}, {
"featureType" : "governmentlabel",
"elementType" : "labels.text",
"stylers" : {
"fontsize" : 28
}
}, {
"featureType" : "roadarrow",
"elementType" : "labels.icon",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "educationlabel",
"elementType" : "labels",
"stylers" : {
"visibility" : "off"
}
}, {
"featureType" : "education",
"elementType" : "labels",
"stylers" : {
"visibility" : "off"
}
} ]