javascript - 更改谷歌地图标记位置onclick

标签 javascript google-maps

我想移动标记并在单击 map 时获取经度和纬度。 目前,我的 map 已显示,但我无法更改标记位置。 我尝试模仿 this 中的编码器.

我的引用使用按钮来更改标记的位置。在我的情况下,我需要点击 map 。我尝试修改它以适应我的情况,但仍然不起作用。

这是我的代码:

jQuery(document).ready(function( $ ) {

        function myMap(lat,long) {
            var myCenter = new google.maps.LatLng(lat,long);
            var mapCanvas = document.getElementById("googleMap");

            var mapOptions = {
                center: myCenter, 
                zoom: 15,
                treetViewControl: false,
                mapTypeControl: false
            };

            var map = new google.maps.Map(mapCanvas, mapOptions);
            var marker = new google.maps.Marker({position:myCenter});
            marker.setMap(map);

            // Zoom to 9 when clicking on marker
            google.maps.event.addListener(marker,'click',function() {
            map.setZoom(9);
            map.setCenter(marker.getPosition());
            });

            //sets variable for lat and long
            $('.lat').text(lat);
            $('.long').text(long);
        }

        function newLocation(newLat,newLng)
        {
            map.setCenter({
                lat : newLat,
                lng : newLng
            });
        }

        google.maps.event.addDomListener(window, 'load', myMap(3.1412,101.68653));


        $(document).ready(function ()
        {
            google.maps.event.addListener(map, 'click', function(event) {
                newLocation(event.myCenter);
            });
        });

    });

最佳答案

1) 单击 map 并将标记的位置更改为您单击的位置

var map, marker;
$(document).ready(function() {

    function myMap(lat,long) {
        var myCenter = new google.maps.LatLng(lat,long);
        var mapCanvas = document.getElementById("googleMap");

        var mapOptions = {
            center: myCenter, 
            zoom: 15,
            treetViewControl: false,
            mapTypeControl: false
        };

        map = new google.maps.Map(mapCanvas, mapOptions);
        marker = new google.maps.Marker(
            {
                position:myCenter,
                draggable: true
            }
        );
        marker.setMap(map);

        // Zoom to 9 when clicking on marker
        google.maps.event.addListener(marker,'click',function() {
            map.setZoom(9);
            map.setCenter(marker.getPosition());
        });

        //sets variable for lat and long
        $('.lat').text(lat);
        $('.long').text(long);
    }

    function newLocation(newLat,newLng)
    {
        map.setCenter({
            lat : newLat,
            lng : newLng
        });
    }

    google.maps.event.addDomListener(window, 'load', myMap(3.1412,101.68653));


    $(document).ready(function ()
    {
        // click on map and set you marker to that position
        google.maps.event.addListener(map, 'click', function(event) {
            marker.setPosition(event.latLng);
        });
    });

});

2) 通过拖放更改标记的位置

var map;
$(document).ready(function() {

    function myMap(lat,long) {
        var myCenter = new google.maps.LatLng(lat,long);
        var mapCanvas = document.getElementById("googleMap");

        var mapOptions = {
            center: myCenter, 
            zoom: 15,
            treetViewControl: false,
            mapTypeControl: false
        };

        map = new google.maps.Map(mapCanvas, mapOptions);
        var marker = new google.maps.Marker(
            {
                position:myCenter,
                draggable: true // set marker draggable
            }
        );
        marker.setMap(map);

        // Zoom to 9 when clicking on marker
        google.maps.event.addListener(marker,'click',function() {
            map.setZoom(9);
            map.setCenter(marker.getPosition());
        });

        // when dragend, show new lat and lng in console
        google.maps.event.addListener(marker, 'dragend', function(){
            console.log("lat: "+marker.position.lat())
            console.log("lng: "+marker.position.lng())
        })

        //sets variable for lat and long
        $('.lat').text(lat);
        $('.long').text(long);
    }

    function newLocation(newLat,newLng)
    {
        map.setCenter({
            lat : newLat,
            lng : newLng
        });
    }

    google.maps.event.addDomListener(window, 'load', myMap(3.1412,101.68653));


    $(document).ready(function ()
    {
        google.maps.event.addListener(map, 'click', function(event) {
            newLocation(event.myCenter);
        });
    });

});

关于javascript - 更改谷歌地图标记位置onclick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49703758/

相关文章:

google-maps - 谷歌地图 api key : dev -> staging -> production workflow

android - 使用android在谷歌地图上绘制路线

javascript - jquery 输入文本与替换不起​​作用

javascript - 使用 Google map 绘制巴士路线

javascript - 有没有办法按国家对谷歌地图标记进行聚类?

javascript - Console.log 使用 box2d 记录对象速度

javascript - 如何将自定义 map 标记与 Google map 自动完成搜索框结合起来?

javascript - 删除 jquery 中单击菜单后的菜单悬停操作

javascript - React Redux 身份验证

javascript - 如何使用javascript将HTML用户输入数据存储到excel中