将标记位置检索到要提交的字段

时间:2012-09-05 18:25:59

标签: javascript google-maps

我有来自Google API文档的此代码。它完全符合我的要求,除非我需要能够获得标记放置后的纬度和经度。

在我的网站中,我启用了选项,可以在地图上选择一个位置,但我需要以某种方式从客户设置的标记中获取纬度和经度信息,特别是在隐藏字段中,以便我可以在发布数据$_POST时存储它们。

我现在的代码是:

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <style type="text/css">
      html { height: 100% }
      body { height: 100%; margin: 0; padding: 0 }
      #map_canvas { height: 100% }
    </style>
    <script type="text/javascript"
      src="http://maps.googleapis.com/maps/api/js?key=jsdlkajslkdjaslkdja&sensor=false&language=ar&region=SAU">
    </script>
    <script type="text/javascript">
var map;
var markersArray = [];

function initialize() {
  var haightAshbury = new google.maps.LatLng(26.1631, 50.2044188);
  var mapOptions = {
    zoom: 7,
    center: haightAshbury,
    mapTypeId: google.maps.MapTypeId.TERRAIN
  };
  map =  new google.maps.Map(document.getElementById("map_canvas"), mapOptions);

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

function addMarker(location) {
  marker = new google.maps.Marker({
    position: location,
    map: map
  });
  markersArray.push(marker);
}

// Removes the overlays from the map, but keeps them in the array
function clearOverlays() {
  if (markersArray) {
    for (i in markersArray) {
      markersArray[i].setMap(null);
    }
  }
}

// Shows any overlays currently in the array
function showOverlays() {
  if (markersArray) {
    for (i in markersArray) {
      markersArray[i].setMap(map);
    }
  }
}

// Deletes all markers in the array by removing references to them
function deleteOverlays() {
  if (markersArray) {
    for (i in markersArray) {
      markersArray[i].setMap(null);
    }
    markersArray.length = 0;
  }
}
    </script>
  </head>
  <body onload="initialize()">
    <div id="map_canvas" style="width:100%; height:100%"></div>
  </body>
</html>

我主要需要JS方面的帮助。

1 个答案:

答案 0 :(得分:1)

有一个markersArray变量,它包含所有标记。

在数组上循环,您将通过使用获得每个项目的lat / lng item.getPosition().lat()item.getPosition().lng()


<强> <edit>

限制为1个标记很容易。 改变这一行:

google.maps.event.addListener(map, 'click', function(event) {

进入这个:

google.maps.event.addListenerOnce(map, 'click', function(event) {

<强> </edit>