gpt4 book ai didi

javascript - 如何在 Google map 标记旁边显示标签?

转载 作者:行者123 更新时间:2023-12-02 22:48:15 26 4
gpt4 key购买 nike

我想在谷歌地图上的标记旁边显示一个文本标签。我以前使用过 Virtual Earth,现在才开始使用 Google map 。我尝试设置 Title 属性,但这只会更改滚动文本。

有没有办法在标记下方显示一小行文本,当用户缩放、平移和使用 map 时,该文本行会保留在那里?

最佳答案

如果您只想在标记下方显示标签,那么您可以扩展谷歌地图Marker来为标签添加setter方法,并且您可以通过像这样扩展谷歌地图overlayView来定义标签对象..

演示:jsFiddle

<script type="text/javascript">
var point = { lat: 22.5667, lng: 88.3667 };
var markerSize = { x: 22, y: 40 };


google.maps.Marker.prototype.setLabel = function(label){
this.label = new MarkerLabel({
map: this.map,
marker: this,
text: label
});
this.label.bindTo('position', this, 'position');
};

var MarkerLabel = function(options) {
this.setValues(options);
this.span = document.createElement('span');
this.span.className = 'map-marker-label';
};

MarkerLabel.prototype = $.extend(new google.maps.OverlayView(), {
onAdd: function() {
this.getPanes().overlayImage.appendChild(this.span);
var self = this;
this.listeners = [
google.maps.event.addListener(this, 'position_changed', function() { self.draw(); })];
},
draw: function() {
var text = String(this.get('text'));
var position = this.getProjection().fromLatLngToDivPixel(this.get('position'));
this.span.innerHTML = text;
this.span.style.left = (position.x - (markerSize.x / 2)) - (text.length * 3) + 10 + 'px';
this.span.style.top = (position.y - markerSize.y + 40) + 'px';
}
});
function initialize(){
var myLatLng = new google.maps.LatLng(point.lat, point.lng);
var gmap = new google.maps.Map(document.getElementById('map_canvas'), {
zoom: 5,
center: myLatLng,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var myMarker = new google.maps.Marker({
map: gmap,
position: myLatLng,
label: 'Hello World!',
draggable: true
});
}
</script>
<style>
.map-marker-label{
position: absolute;
color: blue;
font-size: 16px;
font-weight: bold;
}
</style>

这会起作用。

关于javascript - 如何在 Google map 标记旁边显示标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1056330/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com