Google maps jQuery Mobile 1.0.1谷歌地图不';重新加载刷新工作后,不会第一次显示地图

Google maps jQuery Mobile 1.0.1谷歌地图不';重新加载刷新工作后,不会第一次显示地图,google-maps,jquery-mobile,google-maps-api-3,Google Maps,Jquery Mobile,Google Maps Api 3,我的问题是每次我打开网站;第一次地图不显示时,在重新加载/引用后,它工作并显示地图 以下是我的谷歌地图代码: <script type="text/javascript"> var map; var infowindow; function initialize(position) { //var pyrmont = new google.maps.LatLng(48.195201,16.369547); var pyrmont = new google

我的问题是每次我打开网站;第一次地图不显示时,在重新加载/引用后,它工作并显示地图

以下是我的谷歌地图代码:

<script type="text/javascript">
  var map;
  var infowindow;

  function initialize(position) {
    //var pyrmont = new google.maps.LatLng(48.195201,16.369547);
    var pyrmont = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
    map = new google.maps.Map(document.getElementById('map'), {
      mapTypeId: google.maps.MapTypeId.ROADMAP,
      center: pyrmont,
      zoom: 15
    });
    var a = new google.maps.Marker({position: pyrmont,map: map,icon:'catal.png'});
    var request = {
      location: pyrmont,
      radius: 500,
      types: ['restaurant']
    };
    infowindow = new google.maps.InfoWindow();
    var service = new google.maps.places.PlacesService(map);
    service.search(request, callback);
  }

  function callback(results, status) {
    if (status == google.maps.places.PlacesServiceStatus.OK) {
      for (var i = 0; i < results.length; i++) {
        createMarker(results[i]);
      }
    }
    if (status == google.maps.places.PlacesServiceStatus.ZERO_RESULTS){
   alert('zero results near this location');
    }
  }

  function createMarker(place) {
    var placeLoc = place.geometry.location;
    var marker = new google.maps.Marker({
      map: map,
      position: place.geometry.location
    });

    google.maps.event.addListener(marker, 'click', function() {
      infowindow.setContent(    place.name
                                +'<br/>'+place.vicinity);
      infowindow.open(map, this);
    });
  }

  google.maps.event.addDomListener(window, 'load', function(){
      navigator.geolocation.getCurrentPosition(initialize);
  });
</script>

var映射;
var信息窗口;
函数初始化(位置){
//var pyrmont=new google.maps.LatLng(48.195201,16.369547);
var pyrmont=new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
map=new google.maps.map(document.getElementById('map'){
mapTypeId:google.maps.mapTypeId.ROADMAP,
中心:皮尔蒙特,
缩放:15
});
var a=new google.maps.Marker({位置:pyrmont,地图:map,图标:'catal.png'});
var请求={
地点:皮尔蒙特,
半径:500,
类型:[“餐厅”]
};
infowindow=new google.maps.infowindow();
var service=newgoogle.maps.places.PlacesService(地图);
服务搜索(请求、回调);
}
函数回调(结果、状态){
if(status==google.maps.places.PlacesServiceStatus.OK){
对于(var i=0;i”+地点附近);
打开(地图,这个);
});
}
google.maps.event.addDomListener(窗口'load',函数(){
navigator.geolocation.getCurrentPosition(初始化);
});
下面是我如何在jquery中使用它:

<div data-role="page" id="restaurant">
    <div data-role="header">
        <a href="index.html" data-icon="arrow-l">Back</a>
        <h1>Restaurants</h1>    
    </div> 

    <div data-role="content">
        <div id="map" style="width:400px; height:400px;"></div>
    </div> 
</div> 

餐厅

您正在等待
窗口。加载要激发的
事件,该事件只会在整页刷新时激发。以下是违规代码:

google.maps.event.addDomListener(window, 'load', function(){
    navigator.geolocation.getCurrentPosition(initialize);
});
您可以使用jQuery绑定到
#restautant
页面的
pageinit
事件:

$(document).delegate('#restaurant', 'pageinit', function () {
    navigator.geolocation.getCurrentPosition(initialize);
});
这将在初始化
#restaurant
伪页面时触发
initialize()


以下是
pageinit
事件(以及所有其他jQuery移动事件)的文档:

hmm抱歉,我是一个新手,那么我应该在哪里添加这些行呢?第一个代码段来自您的代码,它应该被类似于第二个代码段的东西替换(确切的代码应该可以工作)。两者之间的区别在于,第二种方法使用事件委托,并绑定到更适合应用程序的事件。