快速业务通道

google map使用自定义Marker在地图上添加文字标示 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14

google map使用自定义Marker在地图上添加文字标示

时间:2011-12-08 博客园 ido

google map默认的标示GMarker,只能使用图片不能使用文字。但是在实际中,我们不可避免的需要在地图上标示文字信息。例如地名等。Google 地图 API 使我们可以通过扩展GMarker实现自定义的GMarker的子类LabelMarker。

1 google.maps.LabelMarker = function(latlng, options) 2 { 3     this.latlng = latlng; 4     this.labelText = options.labelText || ''''; 5     this.labelClass = options.labelClass || ''writeb''; 6     this.labelOffset = options.labelOffset || new google.maps.Size(8, -33); 7     options.icon = options.icon || getTextIcon(); 8     google.maps.Marker.apply(this, arguments); 9 } 10 11 google.maps.LabelMarker.prototype = new google.maps.Marker(new google.maps.LatLng(0, 0)); 12 13 google.maps.LabelMarker.prototype.initialize = function(map){ 14     google.maps.Marker.prototype.initialize.call(this, map); 15      16     var label = document.createElement(''div''); 17     label.className = this.labelClass; 18     label.innerHTML = this.labelText; 19     label.style.position = ''absolute''; 20     label.style.width = ''48px''; 21     map.getPane(G_MAP_MARKER_PANE).appendChild(label); 22 23     this.map = map; 24     this.label = label; 25 } 26 27 google.maps.LabelMarker.prototype.redraw = function(force){ 28     google.maps.Marker.prototype.redraw.call(this, map); 29 30     if(!force) 31     { 32         return; 33     } 34 35     var point = this.map.fromLatLngToDivPixel(this.latlng); 36     var z = google.maps.Overlay.getZIndex(this.latlng.lat()); 37      38     this.label.style.left = (point.x + this.labelOffset.width) + ''px''; 39     this.label.style.top = (point.y + this.labelOffset.height) + ''px''; 40     this.label.style.zIndex = z + 1; 41 } 42 43 google.maps.LabelMarker.prototype.remove = function(){ 44     this.label.parentNode.removeChild(this.label); 45     this.label = null; 46     google.maps.Marker.prototype.remove.call(this); 47 } 48  49 function getTextIcon() 50 { 51     var icon = new google.maps.Icon(); 52     icon.image = "/js/map/img/mapts.gif"; 53     icon.iconSize = new GSize(48, 40); 54     icon.iconAnchor = new GPoint(0, 40); 55     icon.infoWindowAnchor = new GPoint(5, 1); 56     return icon; 57 }

在页面上调用的代码:

1 var marker = new google.maps.LabelMarker(map.getCenter(), { 2     labelText:''我在这'' 3     }); 4 5 map.addOverlay(marker);

现在就会在地图上显示我们自定义的GMarker标识了。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号