相关疑难解决方法(0)

如何使用JSTS Library计算Google Maps API中的交叉区域?

我试图计算两个三角形之间的交叉区域.我发现JSTS Topology Suite有一个Geometry类,它有一个方法intersection().我在JSFiddle和我的本地计算机上尝试过,但我得到了一个Uncaught TypeError: undefined is not a function.JSTS 还有一个例子.在这里你可以看到代码.我的代码在JSFiddle中看起来是一样的:

var union = triangleCoords.union(secondTriangleCoords);
var intersection = triangleCoords.intersection(secondTriangleCoords);
console.log('Intersection ' + intersection);
google.maps.geometry.spherical.computeArea(intersection);
Run Code Online (Sandbox Code Playgroud)

还有我应该做的转换吗?

javascript google-maps google-maps-api-3

4
推荐指数
1
解决办法
5514
查看次数

Google Maps Polygons自相交检测

我正在尝试使用Google Maps API V3多边形实现多边形自相交算法.
目标只是检测是或否,用户绘制的简单多边形是自交叉.

我发现这个非常有趣的链接,但它假设多边形顶点的坐标是以geoJSON格式给出的.但是,这不是我的情况; 我只能够检索多边形坐标使用polygon.getPath()polygoncomplete的事件.

这是我检索坐标的方式:

google.maps.event.addDomListener(drawingManager, 'polygoncomplete', function(polygon)
{
    var polygonBounds = polygon.getPath();
    var coordinates = [];

    for(var i = 0 ; i < polygonBounds.length ; i++)
    {            
        vertice = {
                      "Latitude" : polygonBounds.getAt(i).lat(),
                      "Longitude" : polygonBounds.getAt(i).lng()
                  }

        coordinates.push(vertice );
    }
}
Run Code Online (Sandbox Code Playgroud)

如何将这些坐标转换polygon.getpath()geoJSON格式?
有没有更好的方法来检测Google地图多边形是否自相交?如果是这样,请您分享一些代码示例,而不仅仅是数学解释?

PS:我看过这个链接,但没有任何代码示例,我有点迷失.

javascript polygon shapes google-maps-api-3 self-intersection

3
推荐指数
1
解决办法
5135
查看次数

谷歌地图Javascript制作多边形的路径

我正在尝试使用Google Maps Javascript API从JSON中获取点并使用computeOffset()函数来计算左右点,以便我可以使用多边形绘制路径.我当前的代码似乎只是制作奇怪的形状,而不是从点到点制作干净的多边形连接.

我将var lastPoint定义为jQuery $ .each循环中的lastPoint,这样当查询转到下一个lat lng值时,多边形将连接到前一个点.而不是点到点的漂亮方形多边形我得到奇怪的形状,主要是三角形而不是正方形.

$.getJSON('sixth.json', function(data) { 
  var lastPoint;
  var myLatlng2;
  var polyShape;

  $.each( data.contactdetails, function(i, value) {
    myLatlng2 =  new google.maps.LatLng(value.lat, value.lng);

    var boomwidth = value.boomwidth;
    var bear = value.bear;
    var boomconversionfactor = 1;

//computeOffset returns a LatLng position by using the bearing and number of feet to return another location
    var point1 = google.maps.geometry.spherical.computeOffset(myLatlng2, (0.30480 * boomwidth * boomconversionfactor) / 2, bear + 90);
    var point2 = google.maps.geometry.spherical.computeOffset(myLatlng2, (0.30480 * boomwidth * boomconversionfactor) …
Run Code Online (Sandbox Code Playgroud)

javascript jquery google-maps

3
推荐指数
1
解决办法
360
查看次数