2

さて、私はすでにこれを調べましたが、1ページしか見つかりませんでした.

( Google Maps API GeoLocation がモバイルで機能しない)

私の問題は、Google マップ API を呼び出す JavaScript コードがいくつかあり、デスクトップでブラウザを使用して表示すると問題なく表示されることです。使用しているブラウザは Google Chrome ですが、アンドロイド携帯では全く表示されません。問題が何であるかはわかりません。数日間実行しましたが、マップがクラッシュして表示が停止しました。それ以来、コードを再表示するためにコードをやり直す必要がありました。ようやく機能するようになりましたが、今はこの新しい問題があります。これが私が使用しているコードです。

    <!DOCTYPE html>
    <html>
    <head>
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
        <link rel="Stylesheet" type="text/css" href="css/drop.css" />
        <link rel="Stylesheet" type="text/css" href="css/login.css" />
        <script type="text/javascript" src="http://maps.google.com/maps/api/js?   sensor=false"></script>
        <script type="text/javascript">
            function getLocation() {
                if (navigator.geolocation) {
                    navigator.geolocation.getCurrentPosition(getMap, showError);
                }
                else {
                   alert("Geolocation is not supported by this browser.");
                }
            }

           function initialize( lat, lon ) {
               pLatitude = lat;
               pLongitutde = lon;

           var mapOptions = {
              center: new google.maps.LatLng(lat, lon),
              zoom: 14,
              mapTypeId: google.maps.MapTypeId.ROADMAP,
              mapTypeControl: true
           }

           var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
           var marker = new google.maps.Marker({
              position: new google.maps.LatLng(lat, lon),
              map: map,
              title: "Current Location"
           });
        }

        function getMap(position) {
             lat = position.coords.latitude;
             lon = position.coords.longitude;

             google.maps.event.addDomListener(window, 'load', initialize(lat, lon));
        }

        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;
        }
    }
</script>
</head>
<body onload="getLocation()">
   <div id="map-canvas"></div>
</body>
</html>
4

1 に答える 1

3

あなたはいくつかの間違いを犯しました。コードを更新し、説明のためにコメントを追加しました: http://jsfiddle.net/cj5xF/1/

全画面表示もあります (モバイルでのテスト): http://jsfiddle.net/cj5xF/1/embedded/result/

修正コードのスニペット:

    // When the page has loaded, call the getLocation function.
    // Be sure not to use parenthesis after getLocation, or you will
    // call it, instead of passing a reference to it to be called later (callback)
    google.maps.event.addDomListener(window, 'load', getLocation);

これによりgetLocation、ページが読み込まれたときに関数が呼び出されます。関数はgetLocation地理位置情報チェックを実行し、利用可能な場合は、座標を含むオブジェクトinitializeを呼び出して渡します。次に、これらの座標を使用して Google マップを作成します。positioninitialize

于 2013-04-16T06:06:23.853 に答える