您可以访问实时网站以查看问题是如何发生的。
查看错误的步骤如下
- 转到实时网站。
- 启用浏览器的位置跟踪。
- 单击一个地名,它将打开一个新选项卡。它将显示谷歌地图,并根据 URL 参数将地图居中在您单击的位置。
问题是有时它不是随机工作的,它显示的是纯灰色背景而不是显示地图。如果您尝试刷新或再次单击该地名。地图可能工作。但是如果你突然缩小,它就会崩溃。您需要单击标记或拖动地图,然后您可以毫无问题地缩小。
当您关闭浏览器的位置跟踪时,所有这些问题都不会发生。
尝试一下。
PS。不用担心参数的最后 2 或 3 位数字。和这个问题无关,我已经测试过几次了)。控制台日志也不会引发任何错误。
这是我启用浏览器位置跟踪时涉及的代码。我的完整代码在JSFiddle上。
function initialize() {
var myOptions = { zoom: 12, mapTypeId: google.maps.MapTypeId.ROADMAP };
map = new google.maps.Map(document.getElementById("map"), myOptions);
var infoWindow2 = new google.maps.InfoWindow({ content: '<div style="overflow:hidden;" id="currentInfoWindow"><p>You are here !!!</p></div>' });
// Try W3C Geolocation (Preferred)
if(navigator.geolocation) { // BEGIN IF USER ENABLE
browserSupportFlag = true;
navigator.geolocation.getCurrentPosition(function(position) { //getCurrentPosition
querystring = window.location.search.substr(1);
console.log(querystring);
element = querystring.split(",");
if (querystring) {
clickedLocation = new google.maps.LatLng(element[0],element[1]);
map.setCenter(clickedLocation);
map.setZoom(18);
} else {
initialLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
}
//Set map center to be the user's location
map.setCenter(initialLocation);
//Place the marker of current position
var markerCurrent = new google.maps.Marker({
position: initialLocation,
map: map,
title:"You are here !!!",
icon : 'assets/frontend/images/yourmarker.png'
});
// Attaching a click event to the current marker
google.maps.event.addListener(markerCurrent, "click", function(e) {
infoWindow.close();
this.getMap().setCenter(this.getPosition());
map.setZoom(12);
infoWindow2.open(map, markerCurrent);
});
// IF NOT SUPPORT OR ENABLE >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
} // End getCurrentPosition
, function() { handleNoGeolocation(browserSupportFlag); });
} // END IF Browser doesn't support Geolocation
else {
//Other code here.
}