地理位置代码在桌面浏览器上工作,但不在移动设备上
问题描述:
我的Google地图JavaScript代码显示在桌面浏览器上,但不显示在移动设备上(不是Apple或Android)。我知道还有其他类似的问题,我已经尝试了答案,没有运气。 这是我试过的: 当页面加载时,我调用了getLocation函数。然后我初始化地图...没有运气。地理位置代码在桌面浏览器上工作,但不在移动设备上
我得到的错误消息是:error.POSITION_UNAVAILABLE我在每个移动设备上都收到此消息。
这是我的代码:
$(document).ready(function(){
google.maps.event.addDomListener(window, "load", getLocation);
});
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(initMap, showError);
}
else {
alert("Geolocation is not supported by this browser.");
}
}
function initMap(tipoUser,userId,locations) {
var icn="img/mechanic.png";
var meIcn="img/me.png";
directionsService = new google.maps.DirectionsService;
directionsDisplay = new google.maps.DirectionsRenderer({
polylineOptions: {
strokeColor: "red"
}
});
map = new google.maps.Map(document.getElementById('map-canvas'), {
zoom: 13,
center: new google.maps.LatLng(53.529773,-113.509387),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
directionsDisplay.setMap(map);
var i;
var infowindow = new google.maps.InfoWindow();
$.each(locations, function(index, element) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(parseFloat(element.longitud), parseFloat(element.latitud)),
center: new google.maps.LatLng(53.529773,-113.509387),
map: map,
icon: icn,
optimized: false
});
markers.push(marker);
google.maps.event.addListener(marker, 'mousedown', (function(marker, i) {
watchId = navigator.geolocation.watchPosition(function(position){
lat = position.coords["latitude"];
lng = position.coords["longitude"];
markerMe = new google.maps.Marker({position: {lat: lat, lng: lng}, map: map, icon:meIcn});
});
return function() {
var distinationOrigin = new google.maps.LatLng(lat, lng);
var destinationMarker = parseFloat(element.longitud) + ',' + '' + parseFloat(element.latitud);
infowindow.setContent(element.datos);
infowindow.open(map, marker);
calculateAndDisplayRoute(directionsService, directionsDisplay, distinationOrigin, destinationMarker, infowindow);
}
})(marker, i));
});
var checkPositions=setInterval(function(){
while(markers.length){
markers.pop().setMap(null);
}
$.post('codigo/getLatLngFromDB.php', {who:tipoUser, userId:userId}, function(data){
miJson=$.parseJSON(data);
watchMecs(userId,miJson);
return false;
});
},60000);
}
function showError(error) {
switch (error.code) {
case error.PERMISSION_DENIED:
alert("User denied the request for Geolocation.");
break;
case error.POSITION_UNAVAILABLE:
alert("Location information is unavailable.");
break;
case error.TIMEOUT:
alert("The request to get user location timed out.");
break;
case error.UNKNOWN_ERROR:
alert("An unkown error occurred.");
break;
}
}
答
我得到了解决它,
我不得不去谷歌的开发者网站,关键是,在许多方面,如*。实例添加我的域名.com .example.com/www.example.com www.example.com/等...这是我可以看到在手机上显示的地图的唯一途径。
谢谢大家的意见
是在特定浏览器中允许的位置服务吗?你有没有检查设置?如果你想用正确的错误处理函数实现getLocation函数,你就会知道问题出在哪 –
你在桌面上测试过哪些浏览器?你的网站是https吗? – sideroxylon
您的initMap函数具有错误的签名作为'navigator.geolocation.getCurrentPosition'的回调函数。即使在桌面浏览器中,发布的代码也不适用于我。请张贴演示您的问题的[mcve]。 – geocodezip