【问题标题】:Google maps marker does not drag谷歌地图标记不拖动
【发布时间】:2016-04-10 18:04:10
【问题描述】:

我一直在尝试将谷歌地图添加到我的网站,其中标记将显示用户的当前位置,用户可以拖动标记并且位置名称将显示在文本框中。但是我的标记没有移动,以及如何在文本框中获取位置,反之亦然文本框在地图上的位置。我想实现这个:enter link description here

    function initMap() {
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(showPosition,   showError);
        } else {
            x.innerHTML = "Geolocation is not supported by this browser.";
        }
    }

    function showPosition(position) {
        lat = position.coords.latitude;
        lon = position.coords.longitude;
        latlon = new google.maps.LatLng(lat, lon)
        mapholder = document.getElementById('map')

        var myOptions = {
            center: latlon, zoom: 14,
            mapTypeId: google.maps.MapTypeId.ROADMAP,
            mapTypeControl: false,
            navigationControlOptions: 
            { style:google.maps.NavigationControlStyle.SMALL }
            }  

        var map = new google.maps.Map(document.getElementById("map"),     myOptions);
        var marker = new google.maps.Marker({
            position: latlon,
            map: map,
            title: "Choose",
            draggable: true
        });


    }

    function showError(error) {
        switch (error.code) {
            case error.PERMISSION_DENIED:
                x.innerHTML = "User denied the request for Geolocation."
                break;
            case error.POSITION_UNAVAILABLE:
                x.innerHTML = "Location information is unavailable."
                break;
            case error.TIMEOUT:
                x.innerHTML = "The request to get user location timed out."
                break;
            case error.UNKNOWN_ERROR:
                x.innerHTML = "An unknown error occurred."
                break;
        }
    }

    updateMarkerPosition(latlon);
    geocodePosition(latlon);

    // Add dragging event listeners.
    google.maps.event.addListener(marker, 'dragstart', function () {
        updateMarkerAddress('Dragging...');
    });

    google.maps.event.addListener(marker, 'drag', function () {
        updateMarkerStatus('Dragging...');
        updateMarkerPosition(marker.getPosition());
    });

    google.maps.event.addListener(marker, 'dragend', function () {
        updateMarkerStatus('Drag ended');
        geocodePosition(marker.getPosition());
    });



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

【问题讨论】:

  • 您遇到的错误的任何日志或信息?
  • 没有。我可以查看地图和标记。但是标记没有移动。
  • 您应该在创建标记后立即添加监听器。
  • 已经有人回答了。你应该试试

标签: html asp.net twitter-bootstrap google-maps


【解决方案1】:

如果你想使用监听器,这些应该位于你创建标记的位置,而不是函数之外..

function showPosition(position) {
    lat = position.coords.latitude;
    lon = position.coords.longitude;
    latlon = new google.maps.LatLng(lat, lon)
    mapholder = document.getElementById('map')

    var myOptions = {
        center: latlon, 
        zoom: 14,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        mapTypeControl: false,
        navigationControlOptions: 
        { style:google.maps.NavigationControlStyle.SMALL }
        }  

    var map = new google.maps.Map(document.getElementById("map"),     myOptions);
    var marker = new google.maps.Marker({
        position: latlon,
        map: map,
        title: "Choose",
        draggable: true
    });

    // Add dragging event listeners.
    google.maps.event.addListener(marker, 'dragstart', function () {
        updateMarkerAddress('Dragging...');
    });

    google.maps.event.addListener(marker, 'drag', function () {
       updateMarkerStatus('Dragging...');
       updateMarkerPosition(marker.getPosition());
    });

    google.maps.event.addListener(marker, 'dragend', function () {
        updateMarkerStatus('Drag ended');
        geocodePosition(marker.getPosition());
    });


}

【讨论】:

  • This: Uncaught ReferenceError: showError is not defined
  • 这意味着你的函数 showError 没有定义。或者更简单地说,你没有正确关闭括号......所以解释器找不到函数......
  • 是的,谢谢。你能告诉我如何将位置名称传递给文本框吗?并在标记上弹出文本?我是谷歌地图的新手,我不知道。
  • 在 S.O.如果公平,请及时发布问题。因此,如果解决了这个问题,则将其标记为已接受,并且有用率是否也有用。如果您在其他问题上需要更多支持,则发布适当的问题是让整个社区可以帮助您或提供建议的更好方法。
  • 无论如何,在 S.O. 很多人那里给你发新答案。这可以帮助..我不忙的时候也可以...
猜你喜欢
  • 2012-08-07
  • 2011-08-07
  • 2016-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-04
  • 2011-03-25
  • 2014-08-28
相关资源
最近更新 更多