从可拖动的推动标记获取lat和lng(放置搜索框)

时间:2017-10-02 12:57:27

标签: javascript google-maps google-maps-api-3 google-maps-markers

用户必须在注册表单中选择他们的位置,我使用地方搜索框。
对于以后的应用程序,我需要精确的lat和lng,因为我需要一个可拖动的标记。

我提供了Plunker

尝试过各种各样的组合,如:

user = client.getAuthenticated().activeDirectoryUsers()
       .getByName(uid.getUidValue());
user.update()
   .withPassword(accessor.getPassword().toString())
   .apply();

lat lng框不会在拖动时更新。听众被忽略了。

编辑附加信息:“markers”是我创建的标记的变量 #lat,#lng是隐藏输入字段的id。

EDIT2:我从plunker中清除了我的整个代码,只为此问题提供了必要的代码:

google.maps.event.addListener(markers, 'dragend', function (event) {
    document.getElementById("lat").value = event.latLng.lat();
    document.getElementById("lng").value = event.latLng.lng();

    $('#lat').val(event.latLng.lat())  ;
    $('#lng').val(event.latLng.lng())  ;


});

1 个答案:

答案 0 :(得分:1)

您好您可以在代码中使用places_changed事件,

google.maps.event.addListener(searchBox, 'places_changed', function () {
....
...
var places = searchBox.getPlaces();
for (var i = 0, place; place = places[i]; i++) {

    $('#MAP_LAT').val(place.geometry.location.lat());
    $('#MAP_LNG').val(place.geometry.location.lng());
}

OR

google.maps.event.addListener(markers, 'dragend', function (event) {
    document.getElementById("lat").value = markers.getPosition().lat();
    document.getElementById("lng").value = markers.getPosition().lng();
});

注意我没试过。

我测试了它,代码在下面,我认为你无法正确获取标记变量或我创建标记并且可以处理它;

 if ($('#MAP_LAT').val() > 0 && $('#MAP_LNG').val() > 0) {
            markerNew = new google.maps.Marker({
                position: {lat: parseFloat($('#MAP_LAT').val()), lng: parseFloat($('#MAP_LNG').val())},//event.latLng,//
                map: map,
                icon: '../maps/GoogleMapsMarkers/original/red_MarkerH.png',
                title: 'My Marker',
                draggable: true,
                animation: google.maps.Animation.DROP
            });
            google.maps.event.addListener(markerNew, 'dragend', function () {
                var lat = markerNew.getPosition().lat();
                var lng = markerNew.getPosition().lng();
                $('#MAP_LAT').val(lat);
                $('#MAP_LNG').val(lng);
            });
        }

我找到了,这就是我认为你不能使用标记变量, 它是编辑你的plunker代码 screenshot your plunker code after edited

你可以看到用于测试的整个plunker代码,在你的函数之后添加这个代码" places.forEach(function(place){"

  console.log(markers);
  if(markers != null){
  google.maps.event.addListener(markers[0], 'dragend', function () {

  var lat = markers[0].getPosition().lat();
  var lng = markers[0].getPosition().lng();
  console.log(lat);
  });
  }

,享受