我希望我的用户能够在地图上选择一个地方并返回可以上传到数据库的lat和lon。任何帮助将不胜感激
答案 0 :(得分:5)
因为您正在处理Google Maps API(基于您的问题标签),我想利用JavaScript中的内置API功能可能会有所帮助。您可以转到this place开始学习JavaScript,然后阅读the API here,最后将能够使用JavaScript发布表单,其值已由JavaScript自动设置用户在地图上单击的点的纬度和经度。
以下是您可能需要做的一些事情,但您可能需要学习一些JavaScript来扩展它或有效地使用它:
var map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(new GLatLng(37.4419, -122.1419), 13);
GEvent.addListener(map,"click", function(overlay, latlng) {
if (latlng) {
alert("Latitude : " + latlng.lat() + " , Longitude: " + latlng.lng() );
}
});
所以,假设你创建一个简单的html页面,其中包含一个表格来保存纬度和经度,如下所示:
<form action="some_server_side_script_or_path" method="POST" id="map_form">
<!-- display the map -->
<div id="map_canvas"></div>
<label for="mlatitude">Male</label>
<input type="text" name="mlatitude" id="mlatitude" readonly="readonly"/>
<br />
<label for="mlongitude">Male</label>
<input type="text" name="mlongitude" id="mlongitude" readonly="readonly"/>
<br />
<input type="submit" value="Submit Location" />
</form>
然后,通过像这样修改我们的clik-handler,我们可以在表单上自动设置纬度和经度,然后让用户只需单击submit将值发布到服务器。
GEvent.addListener(map,"click", function(overlay, latlng) {
if (latlng) {
var lat = document.getElementById("mlatitude");
var lng = document.getElementById("mlongitude");
lat.value = latlng.lat();
lng.value = latlng.lng();
//at this point, you can even use Javascript to auto-submit the form using
//document.forms["map_form"].submit();
}
});