地理位置代码适用于桌面浏览器,但不适用于移动设备

时间:2017-01-23 06:11:08

标签: javascript google-maps google-maps-api-3

我的Google地图javascript代码显示在桌面浏览器上,但不会显示在移动设备上(不是苹果或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;
    }
  }

1 个答案:

答案 0 :(得分:0)

我解决了它,

我必须访问谷歌开发者网站,其中包含密钥,并以多种方式添加我的域名,例如* .example.com .example.com / www.example.com www.example.com/ < / em>等......这是我能看到地图在手机上显示的唯一方式。

谢谢大家的意见