javascript - 通过选择更改标记图标 API google maps v3

标签 javascript html google-maps-api-3

我有这个问题, 我在 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>

当用户在选择中选择一个或另一个选项时,我需要更改最后创建的标记(只是最后一个)的图标。我不知道我是否需要一个监听器,或者我可以只用“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>
    

working example

关于javascript - 通过选择更改标记图标 API google maps v3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18392077/

相关文章:

javascript - 如何将Raphael JS纸张的宽度和高度设置为与其包含的div相同?

html - 对话框未显示在谷歌地图中

javascript - 如何定位特定的 div 然后切换类?

javascript - 使用 JavaScript 更改 Canvas 背景

javascript - 从 php Controller 动态添加标记

javascript - 无法从 Google Place Search API 返回的 JSON 中提取数据

javascript - 如何在 JavaScript 中清空数组?

javascript - 使用javascript循环播放选择选项

javascript - 在打开文件对话框中禁用拖放功能

javascript - 未定义的异步 Google Maps API v3 不是函数