1

Googleマップアプリケーションを使用してWebページを開発していますが、問題が発生しています。現状では、Webページには機能マップ(レイヤーなし)と検索バーがあります。私はプログラミングに不慣れなので、うまくいけば、私が見逃しているクイックフィックスがあります。

住所を検索すると、目印が本来あるべき場所に配置されます。ただし、別のアドレスで2回目の検索を行うと、最初の検索の目印が表示されたままになるため、画面に2つの目印が表示されます。古い目印を新しい目印に置き換えるにはどうすればよいですか?

<script type="text/javascript">
    var geocoder;
    var map; 
    var marker;
  function initialize() {
    geocoder = new google.maps.Geocoder ();
    var latlng = new google.maps.LatLng (55.1667, -114.4000);
    var myOptions = {
      zoom: 5,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }
     map = new google.maps.Map(document.getElementById("map_canvas"),
        myOptions);
    marker = new google.maps.Marker({map:map});
        }
    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);
            marker.setposition(results [0].geometry.location);
            map.setZoom(16);
            } 
        else {
            alert("Geocode was not successful for the following reason: " + status);
                }
    }); 
                            }
</script>
4

1 に答える 1

0

あなたが説明したことを達成する1つの方法は、グローバルmarker変数を使用することです。codeAddress関数はnew google.maps.Marker実行されるたびに呼び出されるため、毎回新しいマーカーを取得します。

代わりにsetPosition、グローバル マーカーの機能を使用して移動します。

    var geocoder;
    var map; 

    // ADDED
    var marker;

  function initialize() {
    geocoder = new google.maps.Geocoder ();
    var latlng = new google.maps.LatLng (55.1667, -114.4000);
    var myOptions = {
      zoom: 5,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }
     map = new google.maps.Map(document.getElementById("map_canvas"),
        myOptions);

     // ADDED
     marker = new google.maps.Marker({ map: map });
  }
    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);

            // CHANGED
            marker.setPosition(results [0].geometry.location);

            map.setZoom(16);
        } 
        else {
            alert("Geocode was not successful for the following reason: " + status);
        }
    }); 
}
于 2012-05-28T22:02:34.310 に答える