1

panBy を使用する予定ですが、マウスがバウンディング ボックスに「近い」ことを検出する方法がわかりません。ここからどこから始めればよいかさえわかりません。

4

1 に答える 1

2

わかりました、これが私がそれをやった方法です。

google.maps.event.addListener(map, 'mousemove', function(event) {

        ///
        var overlay = new google.maps.OverlayView();
        overlay.draw = function() {};
        overlay.setMap(map);

        ///
        var point = map.getCenter();
        var projection = overlay.getProjection();
        var pixelpoint = projection.fromLatLngToDivPixel(point);

        ///
        var thelatlng = event.latLng;
        var proj = overlay.getProjection();
        var thepix = proj.fromLatLngToDivPixel(thelatlng);
        var mapBounds = map.getBounds();
        var mB_NE = mapBounds.getNorthEast();
        var mB_SW = mapBounds.getSouthWest();

        var nE = proj.fromLatLngToDivPixel(mB_NE);
        var sW = proj.fromLatLngToDivPixel(mB_SW);

        var north = nE.y;
        var east = nE.x;
        var south = sW.y;
        var west = sW.x;


        var appx_north, appx_east, appx_south, appx_west = false;
        if (Math.round(thepix.y) <= Math.round(north+20)) {appx_north = true;}
        if (Math.round(thepix.x) >= Math.round(east-20)) {appx_east = true;}
        if (Math.round(thepix.y) >= Math.round(south-20)) {appx_south = true;}
        if (Math.round(thepix.x) <= Math.round(west+20)) {appx_west = true;}

        if (appx_north) {
            pixelpoint.y -= 5;
            point = projection.fromDivPixelToLatLng(pixelpoint);
            map.setCenter(point);
        }
        if (appx_east) {
            pixelpoint.x += 5;
            point = projection.fromDivPixelToLatLng(pixelpoint);
            map.setCenter(point);
        }
        if (appx_south) {
            pixelpoint.y += 5;
            point = projection.fromDivPixelToLatLng(pixelpoint);
            map.setCenter(point);
        }
        if (appx_west) {
            pixelpoint.x -= 5;
            point = projection.fromDivPixelToLatLng(pixelpoint);
            map.setCenter(point);
        }
    });

これを行うためのより効率的な方法があるかもしれませんが、誰も何も言っておらず、これはうまくいきます。

于 2013-02-04T22:09:45.987 に答える