将输入保存到用户在标记/引脚上输入的InfoWindow中

时间:2014-03-03 09:18:43

标签: javascript html google-maps

我正在尝试实现一个程序,其中用户在信息窗口中输入描述,当您单击标记/引脚(用户在单击时先前插入)时会弹出该描述。现在代码工作正常,文本字段出现在infowindow上并将文本作为输入,但问题是当我关闭该文本字段并再次单击相同的标记时,它会丢失最后输入的内容。以下是我在此论坛上的专家帮助下编写的代码。 P.S:我正在尝试学习javascript,我是新手,所以如果这个问题低于腰带我道歉。

<!DOCTYPE html>
<html>
  <head>
    <title>Accessing arguments in UI events</title>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <style>
      html, body, #map-canvas {
        height: 100%;
        margin: 0px;
        padding: 0px
      }
    </style>
    <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(65.0126304,25.4703071)
  };
  var map = new google.maps.Map(document.getElementById('map-canvas'),
      mapOptions);

  google.maps.event.addListener(map, 'click', function(e) {
    placeMarker(e.latLng, map);
  });
}

function placeMarker(position, map) {
  var marker = new google.maps.Marker({
    position: position,
    map: map
  });
var infowindow = new google.maps.InfoWindow({
   content : "<input type='text'>"
});

  map.panTo(position);
google.maps.event.addListener( marker, "click", function() {
   infowindow.open( map, marker );
});
}

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

    </script>
  </head>
  <body>
    <div id="map-canvas"></div>
  </body>
</html>

1 个答案:

答案 0 :(得分:0)

这是方法:

  1. 定义一个全局计数器,在每个标记添加后增加,
  2. 将该计数器的当前值提供给infowindow,以便我们可以使用它来为输入提供id并确保它们是唯一的,
  3. 向infowindows添加一个事件closeclick,以便在信息窗关闭时使用填充的信息更新输入内容。
  4. 在这些之后增加index
  5. <强>解决方案

    1-在index = 0;

    之前放置function initialize() {

    2-用这个更新你的infowindow创建者:

    var infowindow = new google.maps.InfoWindow({
        content : "<input id='myText" + index + "' type='text'>",
        id : index
    });
    

    3-在标记点击事件后添加另一个事件:

    google.maps.event.addListener( infowindow, "closeclick", function(e) {
        infowindow.setContent("<input id='myText" + infowindow.id + "' type='text' value='" + document.getElementById("myText" + infowindow.id).value + "'>");
    });
    

    4- index++;事件后添加closeclick

    这可能不是最佳做法,但应该有效。