2012-09-10 196 views
0

Hy我無法在谷歌地圖V3中顯示多個標記,我獲取的座標正確但不顯示在地圖上。另外,在控制檯中沒有錯誤谷歌地圖v3陣列標記

  1. map_items [0] =標題
  2. map_items [1] = 55.153766,11.909180
  3. map_items [2] =鏈路
  4. map_items [3] =文本

他們都顯示正確,如果我做一個警報。 例如

「標題」, 「51.00150763193481,-2.5659284999999272」, 「鏈接」, 「文本」

function initialize() { 
      var map = new google.maps.Map(document.getElementById('map'), { 
       zoom: 7, 
       center: new google.maps.LatLng(55.153766, 11.909180), 
       mapTypeId: google.maps.MapTypeId.ROADMAP 
      }); 
      for (var x = 0; x < temp.length; x++) { 
       if(temp[x][1]){ 
        var map_items = temp[x]; 
        var myLatlng = new google.maps.LatLng(map_items[1]); 
        var marker = new google.maps.Marker({ 
         map: map, 
         position: myLatlng, 
         title: map_items[0] 
        }); 
        google.maps.event.addListener(marker, 'click', function() { 
         infowindow.setContent('<div class="google_marker"><a href="'+map_items[2]+'">'+map_items[0]+'</a><br /><p>'+map_items[3]+'</p></div>'); 
         infowindow.open(map, marker); 
        }); 
       } 
      } 
     } 
+0

變量temp在哪裏創建,並且您確定它包含數據? –

+0

臨時變量像200行長,但它是正確的只有標記顯示不起作用 –

回答

7

google.maps.LatLng()有兩個參數,而不是一個,這樣:

var latlon = map_items[1].split(','); 
var myLatlng = new google.maps.LatLng(parseFloat(latlon[0]), parseFloat(latlon[1])); 

雖然事實上,這將是更好地使用對象,而不是其中每個項目包含不同的數據類型的數組,例如:

marker_data[0] = { 
    "lat": 55.153766, 
    "lon": 11.909180, 
    "title": "My Title", 
    "link": "http://stackoverflow.com" 
} 
//etc... 

,然後你訪問它是這樣的:

var myLatlng = new google.maps.LatLng(marker_data[0].lat, marker_data[0].lon); 
+0

Tnks它的工作,但爲什麼?該變量中有2個座標 –

+1

有兩個座標,但變量是一個字符串。它與「我的標題」一樣,有2個詞,但除非你分開它,變量只是一個字符串。 – Marcelo

1

假設map_items[1]是字符串

if (temp[x][1]) { 
    var map_items = temp[x]; 
    var latlng = map_items[1].split(","); 
    var myLatlng = new google.maps.LatLng(parseFloat(latlng[0]), parseFloat(latlng[1])); 
    var marker = new google.maps.Marker({ 
     map: map, 
     position: myLatlng, 
     title: map_items[0] 
    }); 
    google.maps.event.addListener(marker, 'click', function() { 
     infowindow.setContent('<div class="google_marker"><a href="' + map_items[2] + '">' + map_items[0] + '</a><br /><p>' + map_items[3] + '</p></div>'); 
     infowindow.open(map, marker); 
    }); 
} 
0

我認爲,當你點擊任何標記僅去年map_items將可用。創建不同的上下文可能會解決您的問題。

function initialize() { 
       var map = new google.maps.Map(document.getElementById('map'), { 
        zoom: 7, 
        center: new google.maps.LatLng(55.153766, 11.909180), 
        mapTypeId: google.maps.MapTypeId.ROADMAP 
       }); 
       function AttachEventToMarker(marker, map_items){ 

        google.maps.event.addListener(marker, 'click', function() { 
         infowindow.setContent('<div class="google_marker"><a href="'+map_items[2]+'">'+map_items[0]+'</a><br /><p>'+map_items[3]+'</p></div>'); 
         infowindow.open(map, marker); 
        }); 
       } 

       for (var x = 0; x < temp.length; x++) { 
        if(temp[x][1]){ 
         var map_items = temp[x]; 
         var myLatlng = new google.maps.LatLng(map_items[1]); 
         var marker = new google.maps.Marker({ 
          map: map, 
          position: myLatlng, 
          title: map_items[0] 
         }); 
         AttachEventToMarker(marker, map_items); 
        } 
       } 
      }