-1

ユーザーは、場所検索ボックスを使用して登録フォーム上で自分の位置を選択する必要があります。
私はドラッグ可能なマーカーが必要なので、私は正確な緯度と経度が必要です。

私はPlunker

のような成功witouth様々な組み合わせすでにしようとしました提供:ドラッグ可能なプッシュマーカー(場所検索ボックス)からlatとlngを取得

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()) ; 


}); 

緯度LNGボックスはドラッグに更新されません。リスナーは無視されます。

編集追加情報:「マーカー」は作成したマーカーの変数です。
#lat、#lngは、非表示の入力フィールドのIDです。

EDIT2:私は、この問題のために必要なコードでplunkerから私の全体のコードを片付け

var inputradius = document.getElementById('myRange'); 
function initAutocomplete() { 

    var CenterToCountry = {lat: 50.9725, lng: 11.4804}; 
    var map = new google.maps.Map(document.getElementById('map'), { 
    center: CenterToCountry, 
    zoom: 6, 
    mapTypeId: 'roadmap', 
    streetViewControl: false, 
    mapTypeControl: false 
    }); 

    var input = document.getElementById('pac-input'); 
    var searchBox = new google.maps.places.SearchBox(input); 

    map.controls[google.maps.ControlPosition.TOP_LEFT].push(input); 

    map.addListener('bounds_changed', function() { 
    searchBox.setBounds(map.getBounds()); 
    }); 

    var markers = []; 

    searchBox.addListener('places_changed', function() { 
    var places = searchBox.getPlaces(); 

    if (places.length === 0) { 
     return; 
    } 

    markers.forEach(function(marker) { 
     marker.setMap(null); 
    }); 

    markers = []; 

    var bounds = new google.maps.LatLngBounds(); 

    places.forEach(function(place) { 
     if (!place.geometry) { 
     console.log("Returned place contains no geometry"); 
     return; 
     } 


     markers.push(new google.maps.Marker({ 
     map: map, 
     title: place.name, 
     draggable:true, 
     position: place.geometry.location 
     })); 


     var location = place.geometry.location; 
     var lat = location.lat(); 
     var lng = location.lng(); 

     document.getElementById("lat").value = lat; 
     document.getElementById("lng").value = lng; 

     if (place.geometry.viewport) { 
     bounds.union(place.geometry.viewport); 
     } else { 
     bounds.extend(place.geometry.location); 
     } 

    map.fitBounds(bounds); 
    }); 
}); 


       google.maps.event.addListener(markers, 'dragend', function() { 
       var lat = markers.getPosition().lat(); 
       var lng = markers.getPosition().lng(); 


       $('#lat').val(lat); 
       $('#lng').val(lng); 
      }); 



} 
+0

をお楽しみください。 '? – geocodezip

+0

@geocodezipよろしくお願いします。それは私のマーカーのためのvarです。マーカの代わりにマーカを使用するIm; D。 – delato468

+0

必要な情報は**自分自身で** **外部サイトへのリンクではありません。 – geocodezip

答えて

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); 
      }); 
     } 

それは screenshot your plunker code after edited

あなたplunkerコードを編集している、あなたがテストのための全体plunkerコードを見ることができ、場所私はそれを発見し、それは私がそれはあなたがマーカー変数を使用することはできませんで考えたもので、 あなたの関数の後に、このコードを追加します "places.forEach(関数(場所){"

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); 
    }); 
    } 

、 `マーカーである何

+0

両方とも動作していません。私は、最初に検索ボックスに新しいアドレスを入力し、2番目のコードで同じような問題が発生した場合にのみトリガされると思います。リスナーは怒られます。 @FerhatBAŞ – delato468

+0

こんにちは私はそれをテストし、あなたがマーカーを作成した場合、あなたはポジションを得ることができます、私のプランナーのプレビューで自分のコードを追加しました –

+0

。場所検索ボックス機能では表示されません。 – delato468

関連する問題