0

Google マップを初期化するためにこのスクリプトを作成しました。これはなぜですか?

初期化関数は本体の OnLoad イベントで呼び出されています。

また、クロム以外の他のブラウザではロードされません(2〜3回のページ更新後)

  var infowindow = new google.maps.InfoWindow();
  var places=[];        //contains the addresses of markers

//Find User GeoLocation to Show On Map for the First TIme Map opens.
    if (navigator.geolocation)
    {
            navigator.geolocation.getCurrentPosition(showPosition)                                                             
    }
    else
    {
            alert("Geolocation is not supported by this browser.");
    }

    function showPosition(position)
    {
      latitude=position.coords.latitude;
      longitude= position.coords.longitude;
    }


//Initialize Google Map Api
function initialize()
{
    geocoder = new google.maps.Geocoder();

    //Initial Map Variables
    var myoptions={
            zoom:8,
            center:new google.maps.LatLng(latitude,longitude),
            mapTypeId:google.maps.MapTypeId.ROADMAP
        };  

        //Initialize Map
        map=new google.maps.Map(document.getElementById("map_canvas"),myoptions);           

    });

}
4

1 に答える 1

0

地理位置情報がいつ返されるかが不明だからだと言います。非同期です。地理位置情報が完了する前に地図を読み込もうとすると、変数latitudelongitudeが設定されず、地図は読み込まれません。

地理位置情報が最初に行われることを確認してください。問題はありません。

https://files.nyu.edu/hc742/public/googlemaps/stackload.html

function getLocation() {
var infowindow = new google.maps.InfoWindow();
  var places=[];        //contains the addresses of markers

//Find User GeoLocation to Show On Map for the First TIme Map opens.
    if (navigator.geolocation)
    {
        navigator.geolocation.getCurrentPosition(showPosition, function(err) { alert(err + " " + err.code);});
    }
    else
    {
            alert("Geolocation is not supported by this browser.");
    }
}

    function showPosition(position)
    {
      latitude=position.coords.latitude;
      longitude= position.coords.longitude;
      initialize(latitude, longitude);
    }

//Initialize Google Map Api
function initialize(latitude, longitude)
{
    geocoder = new google.maps.Geocoder();

    //Initial Map Variables
    var myoptions={
            zoom:8,
            center:new google.maps.LatLng(latitude,longitude),
            mapTypeId:google.maps.MapTypeId.ROADMAP
        };  

        //Initialize Map
        map=new google.maps.Map(document.getElementById("map_canvas"),myoptions);           

}

HTML:

<body onload="getLocation()">

<div id="map_canvas"></div>

</body>
于 2012-05-05T17:10:40.733 に答える