2012-01-02 68 views
0

我在我的地圖(Google地圖API的V3)中有一個名爲spots的數組中的50個標記。我想添加一個文本字段,以便用戶可以輸入他們的郵政編碼,並且會添加一個額外的標記,以提供他們相對於周圍標記的位置。我認爲我與下面的內容非常接近,但它贏了; t在地圖上輸出標記。我認爲存在衝突,因爲我已經有了一系列標記,並且不喜歡通過函數添加附加標記。我如何獲得該函數通過codeAddress()函數添加一個額外的元素到數組?或者,即使是正確的做法呢?將地理編碼標記添加到Google Maps V3中已有的標記數組中

<script type="text/javascript"> 
var geocoder; 
var map; 
function initialize() { 

    geocoder = new google.maps.Geocoder(); 
    var myOptions = { 
    zoom: 14, 
    center: new google.maps.LatLng(51.51251523, -0.133201961), 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
    } 
    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 

    setMarkers(map, spots); 
} 


var spots = [ 

['River Street - Clerkenwell', 51.52916347, -0.109970527, '3.png', 2896, 'River Street - Clerkenwell'], 
['Phillimore Gardens - Kensington', 51.49960695, -0.197574246, '3.png', 2897, 'Phillimore Gardens - Kensington'] 

]; 

function setMarkers(map, locations) { 

     var image1 = new google.maps.MarkerImage('amber-spot.png', 
     new google.maps.Size(30, 36), 
     new google.maps.Point(0,0), 
     new google.maps.Point(0, 32)); 

    var shape = { 
     coord: [1, 1, 1, 20, 18, 20, 18 , 1], 
     type: 'poly' 
    }; 

    for (var i = 0; i < locations.length; i++) { 
    var spot = locations[i]; 
    var myLatLng = new google.maps.LatLng(spot[1], spot[2]); 

    var marker = new google.maps.Marker({ 
     position: myLatLng, 
     map: map, 
     icon: spot[3], 
     title: spot[0], 
     zIndex: spot[4], 
     html: spot[5] 
    }); 
    var infowindow = new google.maps.InfoWindow({ 
}); 

    google.maps.event.addListener(marker, 'click', function() { 
    infowindow.setContent(this.html); 
    infowindow.open(map,this); 
}); 
    } 
} 

    function codeAddress() { 
    var address = document.getElementById("address").value; 
    geocoder.geocode({ 'address': address}, function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
     map.setCenter(results[0].geometry.location); 
     var marker2 = new google.maps.Marker({ 
      map: map, 
      position: results[0].geometry.location 
     }); 
     } else { 
     alert("Geocode was not successful for the following reason: " + status); 
     } 
    }); 
    } 
</script> 

這是地理編碼

<div class="view-content"> 
<input id="address" type="textbox" value="W1T 4JD"> 
<input type="button" value="Geocode" onclick="codeAddress()"> 
<div id="map_canvas" style="width:800px; height:600px;"></div> 

回答

0

形式我結束了使用Drupal的GMAP模塊上的接近郵政編碼過濾器來做到這一點。最初我並不認爲它會起作用,因爲我沒有在視圖中使用過濾器被使用的gmap模塊原生地圖,但是我還沒有意識到結果仍然會在返回的數組中:-)。

Lee

相關問題