使用按钮操纵地图

时间:2013-08-09 02:43:26

标签: php javascript google-maps

GD All,

过去几天我一直在尝试使用谷歌地图,并且通过使用按钮来删除标记或绘制路径,以便与地图进行一些互动。

从这里的侦察和阅读几个帖子我可以找到很多选项,虽然所有人都说或多或少相同的故事,它应该相对简单......

不幸的是到目前为止我无法产生预期的结果..: - (

我尝试了几件事: - 添加警报,所以我可以看到该函数是否实际被调用= ok! - 在initialize()中集成函数中的代码,以检查函数代码是否正常= ok!

但似乎仍无法让它发挥作用......

因此,按钮会调用函数,但它们似乎在函数调用后不更新映射。即地图上没有任何变化......?

非常感谢任何帮助。

基本上,他们在初始化中的点击监听器与'callMe'功能相同 然而,如果我让监听器引用'callMe'函数它就不会执行,尽管警告框触发,但是a.k.a.该函数被正确调用。

我的.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>

非常感谢!

马亭

1 个答案:

答案 0 :(得分:1)

您的map变量是在initialize函数范围内定义的,因此无法在callMe内访问。您需要将定义移到initialize之外,或在该函数内添加DOM侦听器以处理按钮单击。