わかりました、この時間の作業に 2 日間費やしました :) マーカーをドラッグ可能にして、緯度と経度の値を更新するだけで、コードはすべて正常に動作します。現時点では、コードは現在の位置と Web ページ上の場所を入力して、緯度と経度を取得します。次に、_Lat と _lng の値がデータベースに送信されます。ユーザーがマーカーをドラッグして場所を微調整し、データベースを送信する前に _lat と _lng を更新できるようにする必要があります。マーカーをドラッグ可能にしましたが、データベースの送信前に lat と _lng の値を動的に更新するように dragend コードを追加する方法がわかりません。データベースにポストされる _lat 値と _lng 値を更新する必要があるだけで、Web ページで何も更新する必要はありません。既存のコードは次のとおりです。
ありがとう
var gmap;
var gmarker;
var geocoder;
function initialize() {
// Get here center of map - by default - San Francisco center
var center = new google.maps.LatLng(37.47, -122.25);
var mapOptions = {
center: center,
zoom: 12,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
geocoder = new google.maps.Geocoder()
gmap = new google.maps.Map(document.getElementById("map_canvas"),
mapOptions);
// Set inner position of map to form parameters
$('input[name="_lat"]').val(37.47);
$('input[name="_lng"]').val(-122.25);
gmarker = new google.maps.Marker({
map: gmap,
position: center,
icon: '/static/internal/images/mapicon.png',
draggable: true
});
google.maps.event.addListener(gmap, 'click', function(event) {
gmarker.setPosition(event.latLng);
$('input[name="_lat"]').val(event.latLng.lat());
$('input[name="_lng"]').val(event.latLng.lng());
});
navigator.geolocation.getCurrentPosition(function(position){
var _lng = position.coords.longitude;
var _lat = position.coords.latitude;
$('input[name="_lng"]').val(_lng);
$('input[name="_lat"]').val(_lat);
var new_position = new google.maps.LatLng(_lat, _lng);
gmap.setCenter(new_position);
gmarker.setPosition(new_position);
})
}
function showAddress(address) {
if (geocoder) {
geocoder.geocode(
{'address': address},
function(results, status) {
if (status != google.maps.GeocoderStatus.OK) {
alert(address + " not found");
} else {
gmap.setCenter(results[0].geometry.location);
gmarker.setPosition(results[0].geometry.location);
$('input[name="_lat"]').val(results[0].geometry.location.lat());
$('input[name="_lng"]').val(results[0].geometry.location.lng());
}
}
);
}
}