0

GD すべて、

ここ数日、Google マップを使って実験してきましたが、ボタンを使用してマーカーをドロップするか、パスを描画することで、マップを操作しようとしていました。

このあたりを偵察し、いくつかの投稿を読むと、多くのオプションを見つけることができますが、すべて多かれ少なかれ同じ話をしていますが、比較的単純なはずです...

残念ながら、これまでのところ望ましい結果を生み出すことができませんでした..:-(

私はいくつかのことを試しました: - アラートを追加して、関数が実際に呼び出されたかどうかを確認できます = OK! - 関数のコードを initialize() に統合し、関数コードが OK = OK! かどうかを確認します。

それでも、まだ機能していないようです...

そのため、ボタンは関数を呼び出しますが、関数呼び出し後にマップを更新していないようです。つまり、マップ上で何も変化していない...?

どんな助けでも大歓迎です。

基本的に、初期化の「クリック リスナー」は「callMe」関数と同じことを行いますが、リスナーに「callMe」関数を参照させると、アラート ボックスがトリガーされても、関数は適切に呼び出されますが、実行されません。

私の .php コード:

<!DOCTYPE html>
<html>
  <head>
    <title>Simple click event</title>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <link href="/maps/documentation/javascript/examples/default.css" rel="stylesheet">
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
    <script>

  function initialize() {
  var mapOptions = {
    zoom: 4,
    center: new google.maps.LatLng(-25.363882, 131.044922),
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };

  var map = new google.maps.Map(document.getElementById('map-canvas'),
      mapOptions);

  var marker = new google.maps.Marker({
    position: map.getCenter(),
    map: map,
    title: 'Click to zoom'
  });

  google.maps.event.addListener(map, 'center_changed', function() {
    // 3 seconds after the center of the map has changed, pan back to the
    // marker.
    window.setTimeout(function() {
      map.panTo(marker.getPosition());
    }, 3000);
  });

  google.maps.event.addListener(marker, 'click', function() {
    map.setZoom(8);
    map.setCenter(marker.getPosition());
  });


}

function callMe(){
  alert('function called');
    map.setZoom(8);
    map.setCenter(marker.getPosition());
  }

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

    </script>
  </head>
  <body>
    <div id="map-canvas" style="width: 100%; height: 300px"></div>
    <div>
      <button id="btnOK" onclick="callMe()">Drop marker</button>
    </div>
  </body>
</html>

どうもありがとう !

マルティン

4

1 に答える 1

1

map変数はinitialize関数のスコープ内で定義されているため、内部では到達できませんcallMeinitializeボタンのクリックを処理するには、定義を の外側に移動するか、その関数の内側に DOM リスナーを追加する必要があります。

于 2013-08-09T02:52:43.153 に答える