使用按钮操纵地图

Manipulating map using buttons

本文关键字:地图 操纵 按钮      更新时间:2023-09-26

GD All,

在过去的几天里,我一直在尝试谷歌地图,并试图通过使用按钮来放置标记或绘制路径来与地图进行一些交互。

从这里的搜索和阅读几篇帖子中,我可以找到许多选择,尽管它们或多或少都讲述了相同的故事,但应该相对简单。。。

不幸的是,到目前为止,我还无法产生所需的结果-(

我尝试了几种方法:-添加警报,这样我就可以看到这个函数是否真的被调用了=ok!-将函数中的代码集成到initialize()中,以检查函数代码是否为ok=ok!

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

因此,按钮确实调用了函数,但它们似乎不会在函数调用后更新映射。也就是说,地图上没有任何变化。。。?

任何帮助都将不胜感激。

基本上,它们在initialize中的"click listener"与"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>

非常感谢!

Martijn

您的map变量是在initialize函数的范围内定义的,因此在callMe内是不可访问的。您需要将定义移动到initialize之外,或者在该函数中添加一个DOM侦听器来处理按钮单击。