Javascript:使用纬度和经度减去多边形

时间:2015-01-30 09:41:06

标签: javascript google-maps google-maps-api-3

我在使用Javascript和Google Maps API进行此操作时遇到问题。

我有一个带有边界(纬度和经度)的矩形。 另外,我有一个带边界的多边形(每个点的纬度和经度)。

我需要获得一个没有多边形的第一个矩形的新多边形,所以我需要将多边形减去矩形并得到新多边形的边界。

我该怎么做?

提前致谢!

1 个答案:

答案 0 :(得分:2)

你走了:

// Create a rectangle
var rectangle = new google.maps.Rectangle({
    strokeOpacity: 0,
    strokeWeight: 0,
    fillColor: '#FF0000',
    fillOpacity: .6,
    bounds: new google.maps.LatLngBounds(
        new google.maps.LatLng(33, 3),
        new google.maps.LatLng(44, 25)
    ),
    zIndex: 0
});

// Get the rectangle bounds
var rb = rectangle.getBounds();

// Create a triangle
var triangle = new google.maps.Polygon({
    strokeOpacity: 0,
    strokeWeight: 0,
    fillColor: '#00FF00',
    fillOpacity: .6,
    paths: [
        new google.maps.LatLng(39, 4),
        new google.maps.LatLng(34, 24),
        new google.maps.LatLng(43, 24),
        new google.maps.LatLng(39, 4)
    ],
    zIndex: 1
});

// Get rectangle points coordinates (path)
var rectangleCoords = [
    new google.maps.LatLng(rb.getNorthEast().lat(), rb.getSouthWest().lng()),
    new google.maps.LatLng(rb.getNorthEast().lat(), rb.getNorthEast().lng()),
    new google.maps.LatLng(rb.getSouthWest().lat(), rb.getNorthEast().lng()),
    new google.maps.LatLng(rb.getSouthWest().lat(), rb.getSouthWest().lng()),
    new google.maps.LatLng(rb.getNorthEast().lat(), rb.getSouthWest().lng())
];

// Create polygon from rectangle coords and triangle path
var polygon = new google.maps.Polygon({
    paths: [rectangleCoords, triangle.getPath()],
    strokeOpacity: 0,
    strokeWeight: 0,
    fillColor: '#FF0000',
    fillOpacity: .6,
    map: map
});

注意:更简单的解决方案是创建矩形,如三角形(Polygon而不是Rectangle),以便您可以直接在其上调用getPath()

希望这会有所帮助。以下是一个有效的演示。

JSFiddle demo