您可以转到live website查看问题是如何发生的。
查看错误的步骤如下
问题有时它不是随机工作的,它显示的是纯灰色背景而不是显示地图。 如果您尝试刷新或再次单击地名。地图可能会起作用。 但如果你突然缩小,它会崩溃。您需要单击标记或拖动地图,然后您可以毫无问题地缩小。
当您关闭浏览器的位置跟踪时,不会发生所有这些问题。
试试吧。
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.
}
答案 0 :(得分:1)
目前你永远不会遇到这个分支:
else {
initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
}
因为总有一个QUERY_STRING。
因为initialLocation
未设置,但您将其用作setCenter()
的参数。
更改此行:
clickedLocation = new google.maps.LatLng(element[0],element[1]);
到
initialLocation = new google.maps.LatLng(element[0],element[1]);
......应该解决它。