2013-06-04 89 views
0

我的Google地圖顯示正確,同時地圖的居中也像魅力一樣。但是當我想添加一些標記(只是標記,不想重新加載整個地圖)沒有任何反應(地圖上沒有可見的標記)。通過Ajax加載的Google地圖標記未顯示

我的劇本是這樣的:

function g_maps(){ 
    var map = new google.maps.Map(document.getElementById('map'), { 
     zoom: 10, 
     center: new google.maps.LatLng(48.2136522, 16.386172), 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }); 
    var infowindow = new google.maps.InfoWindow(); 
} 

function g_maps_marker(coordinates){ 
     var locations = [ coordinates ]; 
     var marker, i; 

     for (i = 0; i < locations.length; i++) { 
      marker = new google.maps.Marker({ 
      position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
      map: map, 
      visible: true 
      }); 

      google.maps.event.addListener(marker, 'click', (function(marker, i) { 
      return function() { 
       infowindow.setContent(locations[i][0]); 
       infowindow.open(map, marker); 
      } 
      })(marker, i)); 
     } 
} 

我的Ajax請求的(重要)的部分看起來像這樣:

... 
     success:function(data){ 
     $('#pagination_content table').empty(); 
     data = $.parseJSON(data); 

     i = 1; 
     coordinates = ""; 
     for(var i in data.results) { 
     $('#content_table').append("blablabla"); 
     coordinates += "['" + data.results[i].title + "', " + data.results[i].lat + ", " + data.results[i].lat + ", " + i++ + "], "; 
     }; 

     coordinates = coordinates.slice(0, -2) 
     g_maps_marker(coordinates); 
     }, 
... 

coordinates輸出是這樣的:

['abc', 48.1857442, 48.1857442, 0], ['xyz', 48.2136522, 48.2136522, 1] 

函數g_mapsdocument.ready()前夕被調用NT。

我正在使用API​​ v3。

回答

0

您正在切片coordinates = coordinates.slice(0, -2);,然後再次製作一個像這樣的var locations = [ coordinates ];這樣的座標陣列。

我很困惑。 slice已經給你一個數組,所以爲什麼再次創建一個數組?你確定你的循環被執行了嗎?

也許您應該從g_maps_marker中刪除var locations = [ coordinates ];,然後重試。我希望它能起作用。

**編輯**

分析代碼遠一點我發現,你要使用字符串,它看起來像一個數組,然後試圖在其周圍循環之後。這不起作用。

例如

 a = "[1, 2, 3]"; 

    b = [a]; 

    b[0][0]; // =>will result in [ and not in your desired element 

你應該使用,以使數組對象爲座標下面的代碼。

 
    i = 1; 

    coordinates = []; 

    for(var i in data.results) 
    { 
     $('#content_table').append("blablabla"); 

     var coordinate = []; 

     coordinate.push(data.results[i].title); 

     coordinate.push(data.results[i].lat); 

     coordinate.push(data.results[i].lon); 

     coordinates.push(coordinate); 
    }; 

而且似乎你忘了使用longitude同時建立座標陣列和使用latitude兩次。我在我的代碼中解決了這個問題。

+0

我切片我的座標輸出,因爲我想擺脫最後的字符 - >「,」 –

+0

是的好。但'slice'總是返回一個數組,所以不需要'var locations = [coordinates];'。它會在另一個數組中創建一個沒有意義的數組,對嗎? :-) –

+0

好的,我把這行改成'var locations = coordinates;'但沒有任何變化:/ –