2017-01-23 45 views
-1

Googleマップのjavascriptコードはデスクトップブラウザに表示されますが、モバイルデバイスでは表示されません。私はこれに類似した他の質問があることを知っています、私は答えと無運を試みました。 これは私が試したことです: 私は、ページが読み込まれたときに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; 
    } 
    } 
+0

は特定のブラウザで許可されている位置情報サービスですか?設定を確認しましたか? getLocation関数を正しいエラーハンドラで実装する場合は、問題が何であるか知っているでしょう –

+1

デスクトップ上でどのブラウザをテストしましたか?あなたのサイトは 'https'ですか? – sideroxylon

+0

あなたのinitMap関数は、 'navigator.geolocation.getCurrentPosition'のコールバック関数であるために間違った署名を持っています。投稿されたコードは、デスクトップブラウザでさえ私にとっては機能しません。あなたの問題を示す[mcve]を投稿してください。 – geocodezip

答えて

0

私はキーがあり、Googleの開発者向けサイトにアクセスして、*などの多くの方法で自分のドメイン名を追加する必要がありました、

それを解決してしまった。実施例.com .example.com/www.example.com www.example.com/など...それは私が携帯に表示された地図を見ることができる唯一の方法でした。

ご意見ありがとうございました

関連する問題