如何让Google Maps API v3监听dragend事件并在投递时填充表单字段
How to get Google Maps API v3 to listen for dragend event and populate form field on drop?
我正在尝试获取谷歌地图上点击位置的纬度和lng,然后将其存储在数据库中。我已经到了可以点击地图位置并填充表单字段的地步,但我也希望能够将标记拖放到新位置,并更新dragend事件上的表单字段。知道如何做到这一点吗?
HTML:
<div id="container">
<div class="row-fluid">
<div class="span10 offset1">
<div id="holyMapDiv"></div>
</div>
</div>
<div class="row-fluid">
<div class="span10 offset1">
<div class="bradyRules">
<div>Lattitude: <span id="latspan"></span></div>
<div>Longitude: <span id="lngspan"></span></div>
<div>Lat Lng: <span id="latlong"></span></div>
<div>Lat Lng on click:
<input type="text" id="latlongclicked"></input></div>
</div>
</div>
</div>
</div>
JavaScript:
var map;
var marker;
function updateMarkerPosition(latLng) {
document.getElementById('latlongclicked').innerHTML = [
latLng.lat(),
latLng.lng()
].join(', ');
}
function mapa()
{
var opts = {'center': new google.maps.LatLng(39.73757, -104.98472), 'zoom':8, 'mapTypeId': google.maps.MapTypeId.TERRAIN, draggableCursor: 'crosshair'}
map = new google.maps.Map(document.getElementById('holyMapDiv'),opts);
google.maps.event.addListener(map,'click',function(event) {
document.getElementById('latlongclicked').value = event.latLng.lat() + ', ' + event.latLng.lng();
placeMarker(event.latLng);
})
google.maps.event.addListener(map,'mousemove',function(event) {
document.getElementById('latspan').innerHTML = event.latLng.lat();
document.getElementById('lngspan').innerHTML = event.latLng.lng();
document.getElementById('latlong').innerHTML = event.latLng.lat() + ', ' + event.latLng.lng();
});
google.maps.event.addListener(marker,'dragend', function(event) {
updateMarkerPosition(marker.getPosition());
});
}
function placeMarker(location) {
if ( marker ) {
marker.setPosition(location);
} else {
marker = new google.maps.Marker({
position: location,
map: map,
animation: google.maps.Animation.DROP,
draggable: true
});
}
}
window.onload = mapa
谢谢。
- 必须在
placeMarker()
的else分支的末尾添加dragend
-事件,在添加侦听器时,在当前位置marker
是undefined
- 在
updateMarkerPosition()
中,设置文本输入的innerHTML
(通常不会有任何效果),改为设置value
相关文章:
- 如何设置html元素填充的动画
- 如何使用jquery在填充自动完成的值后使文本框只读
- 如何通过ajax刷新JSF填充的javascript变量
- 用与线条相同的颜色填充多折线图上的点
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 带有填充属性的SVG矩形显示在包含元素的上方插入框阴影
- 用我的json数据填充JQuery DataTable
- 使用 jQuery 检查所有值是否为空或已填充
- 为什么不't我的变量在我的控制器中填充后在我的视图中呈现
- 如何自动投递提交
- 如何让typeahead在我的搜索栏中填充自定义参数
- 如何使用JSON字符串中的jQuery填充下拉框
- 动态填充两个下拉菜单
- 如何将CSS(特别是填充/边距)应用于select下拉菜单的选项或optgroup
- spine.js在启动时填充模型实例
- 如何将要单独填充的每个HTML画布路径/形状分开
- CSS赢得't填充视图端口
- 从JSON填充列表(而不是HTML)
- Fabric.js-更改矩形填充
- 如何让Google Maps API v3监听dragend事件并在投递时填充表单字段