多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
百度地图 [ http://lbsyun.baidu.com/index.php?title=jspopular/guide/custom-markers ]() 百度坐标拾取器 [http://api.map.baidu.com/lbsapi/getpoint/index.html]() ## 1.引入 ``` <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=yVvstVk5vFkyz8suzQ2fikPrsiC4NiOh"></script> ``` ## 2.css ``` <style> * { margin: 0; padding: 0; } html, body { height: 100%; } #container { height: 100%; } </style> ``` ## 3.html ``` <div id="container"></div> ``` # JS ## 实例化一个地图 ``` var map = new BMap.Map("container"); ``` ## 设置中心点 ``` var point = new BMap.Point(114.380881, 30.6949); ``` ## 初始化,设置中心点及展示级别 ``` map.centerAndZoom(point, 15); ``` ## 开启鼠标滚轮缩放 ``` map.enableScrollWheelZoom(true); ``` ## 平移缩放 ``` map.addControl(new BMap.NavigationControl()); ``` ## 坐标尺 ``` map.addControl(new BMap.ScaleControl()); ``` ## 可折叠的缩略地图 ``` map.addControl(new BMap.OverviewMapControl()); ``` ## 选择地图类型 ``` map.addControl(new BMap.MapTypeControl()); ``` ## 仅当设置城市信息时,MapTypeControl的切换功能才能可用 ``` map.setCurrentCity("北京"); ``` ## 偏移 ``` var opts = { offset: new BMap.Size(150, 5) } map.addControl(new BMap.ScaleControl(opts)); ``` ## 创建标注 ``` var marker = new BMap.Marker(point); map.addOverlay(marker); marker.addEventListener("click", function () { alert("您点击了标注"); }); ``` ## 两点间折线 ``` var polyline = new BMap.Polyline([ new BMap.Point(116.399, 39.910), new BMap.Point(116.405, 39.920) ], { strokeColor: "blue", strokeWeight: 6, strokeOpacity: 0.5 } ); map.addOverlay(polyline); ``` ## 定义自定义覆盖物的构造函数 ``` function SquareOverlay(center, length, color) { this._center = center; this._length = length; this._color = color; } // 继承API的BMap.Overlay SquareOverlay.prototype = new BMap.Overlay(); ``` ## 实现初始化方法 ``` SquareOverlay.prototype.initialize = function (map) { // 保存map对象实例 this._map = map; // 创建div元素,作为自定义覆盖物的容器 var div = document.createElement("div"); div.style.position = "absolute"; // 可以根据参数设置元素外观 div.style.width = this._length + "px"; div.style.height = this._length + "px"; div.style.background = this._color; // 将div添加到覆盖物容器中 map.getPanes().markerPane.appendChild(div); // 保存div实例 this._div = div; // 需要将div元素作为方法的返回值,当调用该覆盖物的show、 // hide方法,或者对覆盖物进行移除时,API都将操作此元素。 return div; } ``` ## 实现绘制方法 ``` SquareOverlay.prototype.draw = function () { // 根据地理坐标转换为像素坐标,并设置给容器 var position = this._map.pointToOverlayPixel(this._center); this._div.style.left = position.x - this._length / 2 + "px"; this._div.style.top = position.y - this._length / 2 + "px"; } ``` ## 添加自定义覆盖物 ``` var mySquare = new SquareOverlay(map.getCenter(), 100, "red"); map.addOverlay(mySquare); ```