百度地图使用2-自定义覆盖物
2015-12-11 14:54
330 查看
@model ShanwuWebSite.Areas.COM.Models.BaiduMapModel @{ ViewBag.Title = "百度地图"; Layout = "~/Areas/COM/Views/Shared/_Layout.cshtml"; } <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <br /> <br /> <br /> <div id="allmap" style="width:300px; height:300px;"></div> <script src="http://api.map.baidu.com/api?v=2.0&ak=Ooaq16jRplQWMN3SxnxPq3rW" type="text/javascript"></script> <script type="text/javascript"> $(function () { @*// 百度地图API功能 var map = new BMap.Map("allmap"); // 创建Map实例 map.centerAndZoom(new BMap.Point(@Model.Latitude, @Model.Longitude), 11); // 初始化地图,设置中心点坐标和地图级别 //map.centerAndZoom("济南", 11); // 初始化地图,设置中心点坐标和地图级别 map.addControl(new BMap.MapTypeControl()); //添加地图类型控件 map.setCurrentCity("北京"); // 设置地图显示的城市 此项是必须设置的 map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放*@ // 百度地图API功能 @*var map = new BMap.Map("allmap"); var point = new BMap.Point(116.417854, 39.921988); // var marker = new BMap.Marker(point); // 创建标注 var myIcon = new BMap.Icon('@Url.Action("GetAvator", new {path= "http://hgproductimg.oss-cn-qingdao.aliyuncs.com/20151208/64e6168047e94e1fac4e94493b2521fc.jpg" })', new BMap.Size(100, 100)); var marker2 = new BMap.Marker(point, { icon: myIcon }); // 创建标注 //marker.setIcon(new BMap.IconSequence('@Url.Action(@"http://hgproductimg.oss-cn-qingdao.aliyuncs.com/20151208/64e6168047e94e1fac4e94493b2521fc.jpg")', new BMap.Size(100, 100))); map.addOverlay(marker2); // 将标注添加到地图中 map.centerAndZoom(point, 15); var opts = { width: 200, // 信息窗口宽度 height: 100, // 信息窗口高度 title: "海底捞王府井店", // 信息窗口标题 enableMessage: true,//设置允许信息窗发送短息 message: "亲耐滴,晚上一起吃个饭吧?戳下面的链接看下地址喔~" } var infoWindow = new BMap.InfoWindow("地址:北京市东城区王府井大街88号乐天银泰百货八层", opts); // 创建信息窗口对象 marker2.addEventListener("click", function () { map.openInfoWindow(infoWindow, point); //开启信息窗口 });*@ var map = new BMap.Map("allmap"); // 创建Map实例 var point = new BMap.Point(116.404, 39.915); // 创建点坐标 map.centerAndZoom(point, 15); // 初始化地图,设置中心点坐标和地图级别。 //1、定义构造函数并继承Overlay // 定义自定义覆盖物的构造函数 function SquareOverlay(center, length, src) { this._center = center; this._length = length; this._src = src; } // 继承API的BMap.Overlay SquareOverlay.prototype = new BMap.Overlay(); //2、初始化自定义覆盖物 // 实现初始化方法 SquareOverlay.prototype.initialize = function (map) { // 保存map对象实例 this._map = map; // 创建div元素,作为自定义覆盖物的容器 var div = document.createElement("div"); // 创建img元素 作为图像显示 var img = document.createElement("img"); //图像相关设置 img.src = this._src; img.style.height = this._length + "px"; img.style.width = this._length + "px"; img.style.borderRadius = "50px"; div.style.position = "absolute"; // 可以根据参数设置元素外观 div.style.width = this._length + "px"; div.style.height = this._length + "px"; div.appendChild(img); div.style.borderRadius = "50px"; // 将div添加到覆盖物容器中 map.getPanes().markerPane.appendChild(div); // 保存div实例 this._div = div; // 需要将div元素作为方法的返回值,当调用该覆盖物的show、 // hide方法,或者对覆盖物进行移除时,API都将操作此元素。 return div; } //3、绘制覆盖物 // 实现绘制方法 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"; } //4、显示和隐藏覆盖物 // 实现显示方法 SquareOverlay.prototype.show = function () { if (this._div) { this._div.style.display = ""; } } // 实现隐藏方法 SquareOverlay.prototype.hide = function () { if (this._div) { this._div.style.display = "none"; } } //5、添加其他覆盖物方法 //比如,改变颜色 SquareOverlay.prototype.yellow = function () { if (this._div) { this._div.style.background = "yellow"; } } //6、自定义覆盖物添加事件方法 SquareOverlay.prototype.addEventListener = function (event, fun) { this._div['on' + event] = fun; } //7、添加自定义覆盖物 var mySquare = new SquareOverlay(new BMap.Point(116.404, 40), 50, "http://hgproductimg.oss-cn-qingdao.aliyuncs.com/20151208/64e6168047e94e1fac4e94493b2521fc.jpg"); map.addOverlay(mySquare); //8、 为自定义覆盖物添加点击事件 mySquare.addEventListener('click', function () { var infoWindow = new BMap.InfoWindow("地址:北京市东城区王府井大街88号乐天银泰百货八层"); // 创建信息窗口对象 map.openInfoWindow(infoWindow, new BMap.Point(116.404, 40)); //开启信息窗口 }); }); </script>
相关文章推荐
- console.log()
- 创建Node Js应用
- Comparable和Comparator以及Arrays.sort方法
- Eclipse开发过程中个VM Arguments的设置
- 简单内存泄漏检测方法,解决Detected memory leaks!问题
- Java学习笔记----线程2
- inode
- ant入门学习
- SQL Server 2008功能选择
- 配置共享文件夹--不同文件夹设置不同访问权限
- IOS点击文字展开滚轮实现,类似下拉列表
- [Windows Server 2003] 还原SQL Server数据库
- dedecms 去掉栏目页的预览功能
- 平时常用sql语句集锦
- hbase filter使用
- 如何解决虚拟机Mac OS X 不支持二进制编译问题()
- 陈词滥调,正确使用memset
- css基础知识
- boost 1.59.0编译及使用
- 百度地图使用1(傻逼做法)