将 jquery .position() 转换为 google maps latlng

Convert jquery .position() to google maps latlng

本文关键字:google maps latlng 转换 jquery position      更新时间:2023-09-26

我有一个有点有趣的问题,我很难弄清楚。 我正在从地图外部实现一个可拖动的div,并希望将其拖到地图上。 我已经触发事件并抓住掉落的位置,但现在我需要将其转换为地图可以理解的内容。

有没有办法将 .position() 返回的值转换为谷歌地图可以理解的 latlng 或点? 我一直在弄乱地图投影,但似乎无法让它相对于地图上的视口工作。 任何朝向正确方向的点都会很棒。

$('#map').droppable({
        drop: function(e, ui) {
            console.log(e);
            console.log(ui);
            var rawMouseLocation = $('#map').mapPlugin('mouseLocation', ui.position);

            mouseLocation = rawMouseLocation.toString().replace(/[()]/g,'')
            var field = $(ui.draggable[0]).data('fieldID');
            var iconPath = $(ui.draggable[0]).find('img').attr('src');
            $('.'+field).val(mouseLocation).removeClass('default-text');
            var layerName = $('#map').mapPlugin('addNewFieldLayer',field, rawMouseLocation, {
                "iconPath":iconPath, 
                'onDragEnd':self.updateField
                });
            newLayers.push(layerName); 
            $(ui.draggable).draggable( 'disable' );
        }
    });

在"鼠标位置"功能中,我需要一种方法将该位置转换为地图坐标。 我什至不确定这是否可能,但任何帮助将不胜感激。 谢谢。

我能够想出一个使用地图叠加视图的解决方案。

 // bunch of stuff to get an overlay set up to convert a pixel location to a lat/long
            MyOverlay.prototype = new google.maps.OverlayView();
            MyOverlay.prototype.onAdd = function() { }
            MyOverlay.prototype.onRemove = function() { }
            MyOverlay.prototype.draw = function() { }
            function MyOverlay(map) { this.setMap(map); }
            overlay = new MyOverlay(aMap);
            google.maps.event.addListener(aMap, 'idle', function() { 
                // Get projection
                projection = overlay.getProjection();
            })

然后在我的鼠标位置函数中,我这样做:

  // need to convert mouse location into a lat/long point
         var point = new google.maps.Point(eventPosition.pageX, eventPosition.pageY);
            var latlng= projection.fromContainerPixelToLatLng(point);
            return latlng;

哪个有鼠标位置的拉特隆! 谢谢!@Vesliq