2013-10-02 81 views
3

我遇到了两个很奇怪的问题,与出现使用Chrome/Mac和Chrome浏览器/ Windows的谷歌地图缩放控制和标记消失

  1. 只发生如果您单击位于第一引脚上的谷歌地图科罗拉多州,并尝试平移地图移动鼠标右侧,你会注意到变焦控制将开始消失。我已经尝试用最大宽度修复它:无;所以这不是同一个错误。

  2. 如果你点击了位于斯科普里右边的标记,你会发现,标记将缩放级别消失20

UPDATE:这两个错误都是固定的,如果我在禁用硬件加速Chrome浏览器,所以我认为它更像是一个Chrome问题,而不是谷歌地图。

这里是一个链接的jsfiddle重现问题http://jsfiddle.net/sokarovski/rx74P/2/

var posSkopje = new google.maps.LatLng(42.007652282715,21.372894287109034); 
var posColorado = new google.maps.LatLng(38.960487365723,-104.76946258545001); 

google.maps.visualRefresh = false; 
var map = new google.maps.Map(document.getElementById("map_canvas"), { 
    center: new google.maps.LatLng(0, 0), 
    zoom: 3, 
    mapTypeId: google.maps.MapTypeId.HYBRID, 
    maxZoom: 20 
}); 

var markerSkopje = new CustomMarker('img.svg'); 
markerSkopje.setPosition(posSkopje); 
markerSkopje.setMap(map); 

var markerColorado = new CustomMarker('img.svg'); 
markerColorado.setPosition(posColorado); 
markerColorado.setMap(map); 

var zoomOnClick = function(arg1) { 
    map.setCenter(this.getPosition()); 
    map.setZoom(22); 
} 

google.maps.event.addListener(markerColorado, 'open', jQuery.proxy(zoomOnClick, markerColorado)); 
google.maps.event.addListener(markerSkopje, 'open', jQuery.proxy(zoomOnClick, markerSkopje)); 

回答

0

中的代码看起来有些问题在这个

//=========== > Custom Marker Class 
function CustomMarker(opts) { 
    this.location_ = null; 
    this.div_ = null; 
    this.inner_ = null; 
    this.opts = { 
     image:  null 
    } 
    this.constructor = function(image) { 
     this.inner_ = document.createElement('img'); 
     jQuery(this.inner_).addClass('thumb').click(jQuery.proxy(this.onPinClick, this)); 
     if (image) this.setImage(image); 
    } 
    this.setPosition = function(ll) { 
     this.location_ = ll; 
    } 
    this.getPosition = function() { 
     return this.location_; 
    } 
    this.onAdd = function() { 
     var div = document.createElement('div'); 
     div.style.border = "none"; 
     div.style.borderWidth = "0px"; 
     div.style.position = "absolute"; 
     div.appendChild(this.inner_); 
     this.div_ = div; 
     var panes = this.getPanes(); 
     panes.overlayMouseTarget.appendChild(div); 
    } 
    this.onPinClick = function(e) { 
     google.maps.event.trigger(this, 'open'); 
    } 
    this.draw = function() { 
     var overlayProjection = this.getProjection(); 
     if (overlayProjection) { 
      var pixPosition = overlayProjection.fromLatLngToDivPixel(this.location_); 
      this.div_.style.left = (pixPosition.x) + "px"; 
      this.div_.style.top = (pixPosition.y) + "px"; 
     } 
    } 
    this.setImage = function(image) { 
     this.inner_.src = image; 
    } 
    this.constructor.apply(this, arguments); 
} 
CustomMarker.prototype = new google.maps.OverlayView(); 
//=========== > Initialization 
var posSkopje = new google.maps.LatLng(42.007652282715,21.372894287109034); 
var posColorado = new google.maps.LatLng(38.960487365723,-104.76946258545001); 

var map = new google.maps.Map(document.getElementById("map_canvas"), { 
    center: new google.maps.LatLng(0, 0), 
    zoom: 3, 
    mapTypeId: google.maps.ROADMAP, 
    maxZoom: 20 
}); 

var markerSkopje = new CustomMarker('http://www.gnhl.ca/images/pushed-pin-hi.png'); 
markerSkopje.setPosition(posSkopje); 
markerSkopje.setMap(map); 

var zoomOnClick = function(arg1) { 
    map.setCenter(this.getPosition()); 
    map.setZoom(20); 
} 

google.maps.event.addListener(markerSkopje, 'open', jQuery.proxy(zoomOnClick, markerSkopje)); 
+0

是与单个标记工作,但问题是,如果你把多个标记它不起作用。另外我注意到,如果我在铬上打开硬件加速,那么这两个错误都是固定的。所以它可能是一个问题,而不是谷歌地图 – thejigsaw

1

的职位是很老,但问题仍然存在。 对于其他人,磕磕绊绊;你可以这样做:

从谷歌做的Markermanager.js的本地拷贝,并修改 这条线(线没有107)

来源:

me.maxZoom_ = opt_opts.maxZoom || 19;

到:

me.maxZoom_ = opt_opts.maxZoom || 21;