Google maps 启用拖动时,Javascript Google Maps v3标记将不可见
我正在使用JavaScriptGoogleMapsAPIv3制作一个地图,在点击地图的地方逐点构建一个多边形。此外,我想使我放置在用户单击的位置的标记可以拖动,以使它们能够编辑多边形的形状 我举了一个例子: 这正是我想要的我想要它做的 我的问题是,当我使标记可拖动时,它在地图上就不可见了。 我在一个jsbin中复制了这个错误,只需取消对marker.setDragable(true)行的注释即可查看错误Google maps 启用拖动时,Javascript Google Maps v3标记将不可见,google-maps,google-maps-api-3,google-maps-markers,Google Maps,Google Maps Api 3,Google Maps Markers,我正在使用JavaScriptGoogleMapsAPIv3制作一个地图,在点击地图的地方逐点构建一个多边形。此外,我想使我放置在用户单击的位置的标记可以拖动,以使它们能够编辑多边形的形状 我举了一个例子: 这正是我想要的我想要它做的 我的问题是,当我使标记可拖动时,它在地图上就不可见了。 我在一个jsbin中复制了这个错误,只需取消对marker.setDragable(true)行的注释即可查看错误 有人知道如何解决这个问题吗?u可以将这样的属性设置为标记 var marker = new
有人知道如何解决这个问题吗?u可以将这样的属性设置为标记
var marker = new google.maps.Marker({
position: e.latLng,
map: map,
draggable: false,
title:'anytext'
});
您可以删除下面的指定代码bcoz,该代码从ur层中删除标记
google.maps.event.addListener(marker, 'click', function () {
marker.setMap(null);
for (var i=0, I = markers.length; i < I && markers[i] != marker; i++);
markers.splice(i, 1);
path.removeAt(i);
});
google.maps.event.addListener(标记,'click',函数(){
marker.setMap(空);
对于(var i=0,i=markers.length;i
似乎这个问题的根本原因是地图的定义。您使用了:
position: latLng,
而不是
center: latLng,
当调用marker.setDraggable()
时,为什么要删除标记?我不明白。即使标记单击事件处理程序被注释掉,标记也会被删除
更新:即使只是从地图选项中注释出
位置:latLng,
也会起作用,因为稍后使用map.panTo(latLng)设置地图中心代码>试试这个
$(document).ready(function (){
// Initialize map
var latLng = new google.maps.LatLng(-37.8142026, 144.963785);
var mapOptions = {
zoom: 10,
panControl: true,
zoomControl: true,
zoomControlOptions: {
style: google.maps.ZoomControlStyle.DEFAULT,
position: google.maps.ControlPosition.TOP_LEFT
},
center: latLng,
scaleControl: false,
mapTypeControl: false,
streetViewControl: false
};
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
// set up polygon creation
var markers = [],
path = new google.maps.MVCArray,
poly = new google.maps.Polygon({
strokeWeight: 3,
fillColor: '#555FF'
});
poly.setMap(map);
poly.setPaths(new google.maps.MVCArray([path]));
google.maps.event.addListener(map, 'click', function (evt) {
var maker = new google.maps.Marker({
position: evt.latLng,
map: map,
draggable: true
});
markers.push(maker);
// Add marker dragend listener to move the path to the marker
google.maps.event.addListener(maker, 'dragend', function () {
for (var i=0, I = markers.length; i < I && markers[i] != maker; i++);
path.setAt(i, maker.getPosition());
});
path.insertAt(path.length, evt.latLng);
});
});
$(文档).ready(函数(){
//初始化映射
var latLng=新的google.maps.latLng(-37.8142026144.963785);
变量映射选项={
缩放:10,
泛控制:对,
动物控制:对,
ZoomControl选项:{
样式:google.maps.ZoomControlStyle.DEFAULT,
位置:google.maps.ControlPosition.TOP_左
},
中心:拉特林,
scaleControl:false,
mapTypeControl:false,
街景控制:错误
};
var map=new google.maps.map(document.getElementById('map-canvas'),mapOptions);
//设置多边形创建
var标记=[],
路径=新的google.maps.MVCArray,
poly=新的google.maps.Polygon({
冲程重量:3,
填充颜色:“#555FF”
});
poly.setMap(map);
poly.setpath(新的google.maps.MVCArray([path]);
google.maps.event.addListener(映射,'click',函数(evt){
var maker=new google.maps.Marker({
职位:evt.latLng,
地图:地图,
德拉格布尔:是的
});
推动(制造商);
//添加标记dragend listener以将路径移动到标记
google.maps.event.addListener(maker'dragend',function(){
对于(var i=0,i=markers.length;i
这很好,但这不会影响标记的可见性。这不是一个好答案。仅将标记设置为可拖动不应触发标记上的单击事件。太好了,谢谢!我也会投票,但我没有这个名声