2011-04-15 49 views
1

感謝這個網站和你的幫助,我幾乎完成了我的Google地圖腳本。還有一件事,我需要你的幫助:Javascript - Google Maps v3 - 獲取標記的位置

我在我的地圖上有多個標記。

我想:

-save在地圖下方的可變
-make外部鏈接,其鏈接到所述標記
-change mapcenter在這些鏈路上的單擊(上述)各標記位置

這裏是我的腳本至今:

<script type="text/javascript"> 
    var offender_locations = [ 
     ["10001", "Title 2", "icon.png"], 
     ["10002", "Title 3", "icon.png"], 
     ["10010", "home", "icon.png"] 
    ]; 

    var myOptions = { 
     zoom: 12, 
     center: latlng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    var map = new google.maps.Map(document.getElementById("results_map"), myOptions); 
    var latlng = new google.maps.LatLng(0, 0); 

    for (i = 0; i < offender_locations.length; i++) { 
     var infowindow = new google.maps.InfoWindow(), 
      geocoder_map = new google.maps.Geocoder(), 
      address = offender_locations[i][0], 
      icon_img = offender_locations[i][2]; 
     (function(addr, img, i) { 
      geocoder_map.geocode({ 
       'address': addr 
      }, function(results, status) { 
       if (status == google.maps.GeocoderStatus.OK) { 
        map.setCenter(results[0].geometry.location); 
        var marker = new google.maps.Marker({ 
         map: map, 
         position: map.getCenter(), 
         icon: img 
        }); 
        google.maps.event.addListener(marker, 'click', (function(marker, i) { 
         return function() { 
          infowindow.setContent(offender_locations[i][1]); 
          infowindow.open(map, marker); 
         } 
        })(marker, i)); 

       } else { 
        alert("error!"); 
       } 
      }); 
     }(address, icon_img, i)); 
    } 

    function zoomin() { 
     map.setZoom(15); 
    }; 

    function zoomout() { 
     map.setZoom(15); 
    } 
</script> 

最後兩個小功能都是點擊甚至外部鏈接秒。此時他們只會改變縮放級別,不要更改地圖中心。

回答

1

嘗試將您的標記推送到數組中,以便稍後查看它們。

在開始的時候每個標記聲明markers.push(marker);後,然後做var markers = [];

+0

嗨Gausie,你可以再詳細一點嗎?我是一個真正的JavaScript新手。我幾乎可以放置標記數組?循環內?一旦我做完了,我怎麼稱之爲單個標記?謝謝! – Andrej 2011-04-15 12:54:46

+0

對不起,遲到的迴應。標記數組位於循環之外(但在範圍內 - 在同一個函數內)。 要找到各個標記,只需循環訪問標記數組! – Gausie 2011-07-20 09:08:23

0

您還可以使用對象來存儲你的標誌或其他層的情況下,要通過主鍵日後訪問:

var markers = {}; 

markers['car_1'] = marker; 

//change the position of 'car_1' 
markers['car_1'].setPosition(x,y); 

//you also can create much more complex structure like this 
marker['car_2'] = {'title': 'Car 1', _ref: marker}; 

//change the position of 'car_2' 
markers['car_2']._ref.setPosition(x,y); 

注意:確保你的對象鍵(在我們的例子:car_1 ,car_2)不一樣(主鍵)。