0

私は理解するのに苦労しているやや興味深い問題を抱えています。マップの外側からドラッグ可能なdivを実装していて、それをマップにドラッグしたいと思います。イベントをトリガーしてドロップの位置を取得するところまで到達しましたが、それをマップが理解できるものに変換する必要があります。

.position()によって返された値を、Googleマップが理解できる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' );
        }
    });

'mouseLocation'関数内で、その位置をマップ座標に変換する方法が必要です。これが可能かどうかさえわかりませんが、どんな助けでも大歓迎です。ありがとう。

4

1 に答える 1

1

マップoverlayViewを使用するソリューションを思いつくことができました。

 // 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();
            })

次に、mouseLocation関数で次のようにします。

  // 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;

これは、マウスの位置のlatlngを持っています!ありがとう!@Vesliq

于 2012-08-16T15:24:38.177 に答える