javascript – 如何使用JSTS库计算Google Maps API中的交叉区域?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 如何使用JSTS库计算Google Maps API中的交叉区域?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2319字,纯文字阅读大概需要4分钟。
内容图文
![javascript – 如何使用JSTS库计算Google Maps API中的交叉区域?](/upload/InfoBanner/zyjiaocheng/804/fe63a81a794b460087566f01ea32a394.jpg)
我试图计算两个三角形之间的交叉区域.
我发现JSTS Topology Suite有一个Geometry class,方法intersection().
我在JSFiddle和我的本地计算机上尝试过,但是我得到了一个Uncaught TypeError:undefined不是一个函数.
JSTS还有example.在这里你可以看到代码.
我的代码在JSFiddle中看起来是一样的:
var union = triangleCoords.union(secondTriangleCoords);
var intersection = triangleCoords.intersection(secondTriangleCoords);
console.log('Intersection ' + intersection);
google.maps.geometry.spherical.computeArea(intersection);
还有我应该做的转换吗?
解决方法:
一般的答案是你需要将google.maps.Polygon对象转换为jsts.geom.Geometry对象,然后运行union.如果要在Google Maps Javascript API v3地图上显示结果,则需要将返回的jsts.geom.Geometry对象转换回google.maps.Polygon.
此代码(从this question开始)将路径转换为jstsPolygon:
var coordinates = googleMaps2JTS(googlePolygonPath);
var geometryFactory = new jsts.geom.GeometryFactory();
var shell = geometryFactory.createLinearRing(coordinates);
var jstsPolygon = geometryFactory.createPolygon(shell);
像这样的东西:
var geometryFactory = new jsts.geom.GeometryFactory();
var trito = bermudaTriangle.getPath();
var tritoCoor = googleMaps2JTS(trito);
var shell = geometryFactory.createLinearRing(tritoCoor);
var trito2 = secondBermuda.getPath();
var tritoCoor2 = googleMaps2JTS(trito2);
var shell2 = geometryFactory.createLinearRing(tritoCoor2);
var jstsPolygon = geometryFactory.createPolygon(shell);
var jstsPolygon2 = geometryFactory.createPolygon(shell2);
var intersection = jstsPolygon.intersection(jstsPolygon2);
但是,要在结果上使用computeArea方法,您需要将其转换回数组或google.maps.LatLng对象的MVCArray(computeArea(path:Array.|MVCArray., radius?:number))
或者您可以使用[jsts.geom.Polygon.getArea](http://bjornharrtell.github.io/jsts/doc/api/symbols/jsts.geom.Polygon.html#getArea)方法.
working fiddle使用jsts方法的三角形,联合和交叉区域.
将结果转换回google.maps.LatLng和google.maps.Polygon对象的代码:
var jsts2googleMaps = function (geometry) {
var coordArray = geometry.getCoordinates();
GMcoords = [];
for (var i = 0; i < coordArray.length; i++) {
GMcoords.push(new google.maps.LatLng(coordArray[i].x, coordArray[i].y));
}
return GMcoords;
}
var intersectionGMArray = jsts2googleMaps(intersection);
然后到达该区域:
var intersectionGMarea = google.maps.geometry.spherical.computeArea(intersectionGMArray);
内容总结
以上是互联网集市为您收集整理的javascript – 如何使用JSTS库计算Google Maps API中的交叉区域?全部内容,希望文章能够帮你解决javascript – 如何使用JSTS库计算Google Maps API中的交叉区域?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。