Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将jquery.position()转换为google地图_Javascript_Jquery_Google Maps_Jquery Plugins - Fatal编程技术网

Javascript 将jquery.position()转换为google地图

Javascript 将jquery.position()转换为google地图,javascript,jquery,google-maps,jquery-plugins,Javascript,Jquery,Google Maps,Jquery Plugins,我有一个有点有趣的问题,我很难弄明白。我正在从地图外部实现一个可拖动的div,并希望将其拖动到地图上。我已经到了触发事件和抓取下落位置的地步,但现在我需要将其转化为地图能够理解的东西 有没有一种方法可以将.position()返回的值转换为谷歌地图可以理解的latlng或point?我一直在搞乱地图投影,但似乎无法使其相对于地图上的视口工作。任何方向正确的点都会很棒 $('#map').droppable({ drop: function(e, ui) {

我有一个有点有趣的问题,我很难弄明白。我正在从地图外部实现一个可拖动的div,并希望将其拖动到地图上。我已经到了触发事件和抓取下落位置的地步,但现在我需要将其转化为地图能够理解的东西

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

$('#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

看看这个,这就是你想要的吗?我能利用你的建议想出一个办法。我会写一篇简短的介绍。