2011-03-21 58 views
2

我正在使用此代码来设置基于位置列表的谷歌地图的界限:谷歌地图API边界:在FF中运行而不是在Safari中运行?

奇怪的是,这是在Firefox中正常工作:地图平底锅和秤,以适应给定的位置。 在Safari中,地图载入太平洋的中间。

你能帮我吗?

感谢, 奥古斯托

LatLngList = [] 
var bounds = new google.maps.LatLngBounds(); 

function add_point_to_list(point) { 
    var lat = point.split(" ")[0] 
    var lng = point.split(" ")[1] 
    var Gpoint = new google.maps.LatLng(lat,lng) 
    LatLngList.push(Gpoint) 
    bounds.extend(Gpoint); 
} 

$.getJSON('/locations/user_map?id=' + <%= @user.id %>, function(data){ 
    if (data.posts) { 
     for (var i in data.posts) { 
      var cord = (data.posts[i].lat + " " + data.posts[i].lng) 
      add_point_to_list(cord) 
     } 
    } 
}) 

function map_init() { 
    var myOptions = { 
     zoom: 6, 
     mapTypeControl: false, 
     panControl: false, 
     zoomControl: false, 
     mapTypeControl: false, 
     scaleControl: false, 
     streetViewControl: false, 
     mapTypeId: google.maps.MapTypeId.TERRAIN 
    } 
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
    //set map center 
    // map.setCenter(latlng); 
    map.fitBounds (bounds); 
    //updateMapOverlays(); 
    //google.maps.event.addListener(map, 'idle', updateMapOverlays); 
    markerCluster = new MarkerClusterer(map, [], {gridSize: 70, maxZoom: 14, zIndex: 1}); 
    geocoder = new google.maps.Geocoder(); 

    refresh_overlays('/locations/user_map?id=' + <%= @user.id %>); 

    marker = new google.maps.Marker({ 
    map: map, 
    icon: userMarkerImage, 
    position: latlng, 
    zIndex: 100 
    }); 

} 
+0

检查Safari中的错误控制台。你有什么错误吗? – 2011-03-21 13:40:15

+0

控制台正面无可见错误:( – Augusto 2011-03-21 13:50:48

回答

1

解决。 map init在尚未准备好时调用边界变量。

所以我把map.fitBounds(bounds);在AJAX回调结束时:

$.getJSON('/locations/user_map?id=' + <%= @user.id %>, function(data){ 
    if (data.posts) { 
     for (var i in data.posts) { 
      var cord = (data.posts[i].lat + " " + data.posts[i].lng) 
      add_point_to_list(cord) 
     } 
     map.fitBounds (bounds); 
    } 
}) 
相关问题