簡體   English   中英

使用選擇更改標記圖標API谷歌地圖v3

[英]Change Marker icon API google maps v3 with a select

我有這個問題,我在html中做了一些選擇選項,每個選項都在值中有一個圖標圖像的名稱:

<select onchange="function()"> // i haven't got the function yet
    <option value="green.png">green</option> 
    <option value="orange.png">orange</option> 
    <option value="teal.png">teal</option> 
</select>

和當前的JavaScript代碼:

 <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>

 <!-- Control Bar -->
 <script type="text/javascript" src="ZoomPanControl.js"></script>
 <!-- Control Bar -->

     <script type="text/javascript">
    var geocoder;
    var map;
function initialize() {
  geocoder = new google.maps.Geocoder();
  var latlng = new google.maps.LatLng(-32.818044,-61.395249);
    // Map Options
  var mapOptions = {
    zoom: 15,
    center: latlng,
    disableDefaultUI: true,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  }
    // Map
  map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);
  var ZoomPanControl = new missouristate.web.ZoomPanControl(map);
        ZoomPanControl.index = -1;
        map.controls[google.maps.ControlPosition.LEFT_TOP].push(ZoomPanControl);
}
    // Directions
function codeAddress() {
var cañada = 'Cañada de Gomez, Argentina';
var altura = document.getElementById('altura').value;
  var address = document.getElementById('address').value + altura + cañada  ;
  geocoder.geocode( { 'address': address}, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
      map.setCenter(results[0].geometry.location);
    // MARKER
      var marker = new google.maps.Marker({
          map: map,
          position: results[0].geometry.location
      });
    } else {
      alert('Error: ' + status);
    }
  });
}

// Listener 
google.maps.event.addDomListener(window, 'load', initialize);

    </script>

當用戶在select中選擇一個或另一個選項時,我需要更改最后創建的標記的圖標(只是最后一個)。 我不知道我是否需要一個聽眾,或者我只能通過“onchange”事件來做。

我該怎么做?

  1. 使標記全局化
  2. 在你更改圖標功能時調用setIcon

     var marker = null; function codeAddress() { var cañada = 'Cañada de Gomez, Argentina'; var altura = document.getElementById('altura').value; var address = document.getElementById('address').value + altura + cañada ; geocoder.geocode( { 'address': address}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { map.setCenter(results[0].geometry.location); // MARKER marker = new google.maps.Marker({ map: map, position: results[0].geometry.location }); } else { alert('Error: ' + status); } }); } <select onchange="marker.setIcon(this.value)"> <option value="http://maps.google.com/mapfiles/ms/micons/green-dot.png">green</option> <option value="http://maps.google.com/mapfiles/ms/micons/orange-dot.png">orange</option> <option value="http://maps.google.com/mapfiles/ms/micons/yellow-dot.png">yellow</option> </select> 

工作實例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM