javascript - 绘图管理器标记监听器 Position_Changed

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

我的代码有问题。我想在使用绘图管理器绘制标记后制作一个可拖动标记,并且希望使输入字段 [lat & lon] 的值随可拖动标记位置而变化值(value)。这是我的代码:

    function initMap() {
        // set up the map
        mapModal = new google.maps.Map(document.getElementById('mapModal'), {
            center : {lat: lat, lng: lng},
            zoom : 15,
            mapTypeId: google.maps.MapTypeId.ROADMAP,
            disableDefaultUI: false,
            zoomControl : true,
        });

        var drawingManager = new google.maps.drawing.DrawingManager({
            drawingMode: google.maps.drawing.OverlayType.MARKER,
            drawingControl: true,
            drawingControlOptions: {
                position: google.maps.ControlPosition.TOP_CENTER,
                drawingModes: ['marker']
            },
            markerOptions: {
                editable: true,
                draggable: true,
            },
        });
        drawingManager.setMap(mapModal);
        google.maps.event.addListener(drawingManager, 'overlaycomplete', function(marker) {
            google.maps.event.addListener(marker, 'position_changed', function () {
                var lat = marker.getPosition().lat();
                var lon = marker.getPosition().lng();

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

我从未发现输入字段 [lat & lon] 的值已更改。这里有人可以帮助我解决我的问题吗?谢谢!

最佳答案

我认为主要问题是marker.getPosition().lat();在事件处理程序中,您应该使用“this”而不是“marker”。不确定它是否能解决所有问题。

这是一个简单的“拖动标记,在输入元素中写入坐标”

<input id="lat" />
<input id="lng" />
<div id="map"></div>
<style>
    #map {
        height: 400px;
    }
</style>
<script>
    function initMap() {
        var myLatlng = {  // Brussels
            lat: 50.85,
            lng: 4.35
        };

        var map = new google.maps.Map(document.getElementById('map'), {
            zoom: 12,
            center: myLatlng
        });

        var marker = new google.maps.Marker({
            position: myLatlng,
            map: map,
            draggable: true,
            title: 'Drag me'
        });

        google.maps.event.addListener(marker, 'position_changed', function() {
            // inside an event handler you should use "this".  
            // "this" represents whatever got affected, in this case the marker
            document.getElementById('lat').value = this.getPosition().lat();
            document.getElementById('lng').value = this.getPosition().lng();
        });

    }
</script>
<script src="https://maps.googleapis.com/maps/api/js?callback=initMap"></script>

关于javascript - 绘图管理器标记监听器 Position_Changed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45419242/

相关文章:

javascript - 使用 document.getelementbyid 从 javascript 在 html 文档中创建表格

android - Google Maps Android API - 如何自动选择标记?

android - 如何解决警告 - 对于 Android 11 中不可用的 Google map 版本 1

javascript - 未找到谷歌地图信息气泡和标记脚本 404

javascript - 谷歌热图梯度范围?

javascript - 自动完成标签不显示数据

javascript - polymer - 在不创建自定义元素的情况下添加行为?

javascript - setInterval 不准确的解决方法是什么?

javascript - 如何使用 Google Maps API 计算 route 从已知点到最近点的距离

php - Google Map API v3 - (1) map 暂时闪烁错误的地理编码 (2) 添加标记点击事件