0

そこで、Google Maps Drawing Managerを使用していくつかのポリゴンを描画し、後で長い座標をデータベースに保存しています。今私の質問は、それを配列にロードした後、保存したポリゴンをマップに再構築するにはどうすればよいですか?それを理解するためのコードが見つからないようです。

これは私が今持っているものです:

    window.initialize_2 = function () {
    var mapOptions = {
        center: new google.maps.LatLng(-34.397, 150.644),
        zoom: 8,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };

    var map = maplimits;

    var drawingManager = new google.maps.drawing.DrawingManager({
        drawingMode: google.maps.drawing.OverlayType.MARKER,
        drawingControl: true,
        drawingControlOptions: {
            position: google.maps.ControlPosition.TOP_CENTER,
            drawingModes: [
            google.maps.drawing.OverlayType.POLYGON]
        },
        markerOptions: {
            icon: 'images/beachflag.png'
        },
        polygonOptions: {
            fillColor: '#ffff00',
            fillOpacity: 10,
            strokeWeight: 5,
            clickable: true,
            editable: true,
            zIndex: 1
        }
 });

    var coord_listener = google.maps.event.addListener(drawingManager, 'polygoncomplete', function (polygon) {
        var coordinates = (polygon.getPath().getArray());
        console.log(coordinates);
        window.poly = polygon;
    });

    //delete shape
    google.maps.event.addListener(drawingManager, 'overlaycomplete', function (e) {
        if (e.type != google.maps.drawing.OverlayType.MARKER) {
            // Switch back to non-drawing mode after drawing a shape.
            drawingManager.setDrawingMode(null);

            // Add an event listener that selects the newly-drawn shape when the user
            // mouses down on it.
            var newShape = e.overlay;
            newShape.type = e.type;
            google.maps.event.addListener(newShape, 'click', function () {
                setSelection(newShape);
            });
            setSelection(newShape);
        }
    });

    // Clear the current selection when the drawing mode is changed, or when the
    // map is clicked.
    google.maps.event.addListener(drawingManager, 'drawingmode_changed', clearSelection);
    google.maps.event.addListener(map, 'click', clearSelection);

    drawingManager.setMap(map);
}
4

2 に答える 2

1

したがって、ポリゴンはマップ上にとどまる必要があります。後で、マップの別のインスタンスで、以前の入力に基づいてポリゴンを描画したいという意味だと思いますか?その場合、ポリゴンオーバーレイを作成します。リンクしたばかりのドキュメントでは、これは非常に簡単です。

于 2012-09-06T21:37:44.497 に答える
1

グローバル配列を設定し(簡単です)、リスナーでポリゴンを格納してから、マップに設定する関数を作成します。

このようなもの:

var polygons = [];

window.initialize_2 = function () {
var mapOptions = {
...
var coord_listener = google.maps.event.addListener(drawingManager, 'polygoncomplete', function (polygon) {
        var coordinates = (polygon.getPath().getArray());
        console.log(coordinates);
        window.poly = polygon;
        poligons = [] // clear the array
        polygons.push(polygon); // insert the polygon into the array
    });
...
    drawingManager.setMap(map);
}

function setPolygon(){
  polygons[0].setMap(map) // set the polygon to the map
}

それが少しお役に立てば幸いです。よろしく。

于 2012-09-07T21:53:31.303 に答える