- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Here Map 上绘制了几个标记和一个多边形对象。
我想知道多边形和标记之间的距离。非常接近多边形的标记是我想要弄清楚的。
这里的 map 有一个距离函数,但它只能计算两个标记之间的距离。
这是我用来计算距离的函数 PaohaIsland.getGeometry().distance(yosmitePark.getGeometry())
在哪里 宝海岛 是 标记 对象和优胜美地 是 多边形 目的
var map;
function loadMap(){
platform = new H.service.Platform({
'apikey': HEREMAP_KEY
});
// Obtain the default map types from the platform object:
var defaultLayers = platform.createDefaultLayers();
// Instantiate (and display) a map object:
map = new H.Map(
document.getElementById('mapContainer'),
defaultLayers.vector.normal.map,
{
center: { lat: 37.278419, lng: -119.674072,
pixelRatio: window.devicePixelRatio || 1 },
zoom: 8
}
);
// Enable the event system on the map instance:
var mapEvents = new H.mapevents.MapEvents(map);
var behavior = new H.mapevents.Behavior(mapEvents);
behavior.enable(H.mapevents.Behavior.WHEELZOOM);
}
function addPolygonToMap() {
var lineString2 = new H.geo.LineString();
lineString2.pushPoint({lat:37.278419,lng:-119.674072});
lineString2.pushPoint({lat:37.335224,lng:-119.30603});
lineString2.pushPoint({lat:37.529331,lng:-119.198914});
lineString2.pushPoint({lat:37.522789,lng:-118.99292});
lineString2.pushPoint({lat:37.627281,lng:-118.87207});
lineString2.pushPoint({lat:37.80978,lng:-119.053337});
lineString2.pushPoint({lat:38.01347,lng:-119.143982});
lineString2.pushPoint({lat:37.965851,lng:-119.770203});
lineString2.pushPoint({lat:37.898689,lng:-120.18219});
lineString2.pushPoint({lat:37.867802,lng:-120.341492});
lineString2.pushPoint({lat:37.746819,lng:-120.239861});
lineString2.pushPoint({lat:37.51844,lng:-120.07782});
lineString2.pushPoint({lat:37.278419,lng:-119.674072});
var yosmitePark = new H.map.Polygon(lineString2, {
style: {
strokeColor: '#829',
lineWidth: 8
}
});
map.addObject(yosmitePark);
var lakeMcClure = new H.map.Marker({
lat: 37.6373862,
lng: -120.3448606
});
lakeMcClure.setData("lakeMcClure");
var Stockton = new H.map.Marker({
lat: 37.9729404,
lng: -121.4419639
});
Stockton.setData("Stockton");
var Monolake = new H.map.Marker({
lat: 38.0067483,
lng: -119.1013779
});
Monolake.setData("Monolake");
var PaohaIsland = new H.map.Marker({
lat: 38.000514,
lng: -119.0416587
});
PaohaIsland.setData("PaohaIsland");
var WalkerLake = new H.map.Marker({
lat: 38.7010578,
lng: -118.878652
});
WalkerLake.setData("WalkerLake");
var Bakersfield = new H.map.Marker({
lat: 35.3208963,
lng: -119.1587737
});
Bakersfield.setData("Bakersfield");
var SanFrancisco = new H.map.Marker({
lat: 37.7576793,
lng: -122.5076405
});
SanFrancisco.setData("SanFrancisco");
map.addObjects([lakeMcClure,Stockton,Monolake,PaohaIsland,WalkerLake,Bakersfield,SanFrancisco]);
var mapObj = map.getObjects();
console.log(yosmitePark.getGeometry());
console.log(PaohaIsland.getGeometry().distance(yosmitePark.getGeometry()));
}
最佳答案
API 中没有计算点到多边形距离的方法。
为了实现这一点,您可以计算从点到多边形外部 LineString 的每个段的距离,然后选择最小的计算值:
function distanceToGeoPolygon(geoPoint, geoPolygon) {
let lineString = geoPolygon.getExterior(),
minDistance = Infinity;
// check distance for each LineString segment of the polygon
for (let i = 0; i < lineString.getPointCount() - 1; i++) {
let segmentStart = lineString.extractPoint(i),
segmentEnd = lineString.extractPoint(i + 1),
distance = distanceToSegment(geoPoint, segmentStart, segmentEnd);
// set new min distance
if (distance <= minDistance) {
minDistance = distance;
}
}
return minDistance;
}
function distanceToSegment(point, segmentStart, segmentEnd) {
// first we find the intersecting point of line which
// crosses the given point and is vertical to segment (start - end)
let y0 = point.lat,
x0 = point.lng,
y1 = segmentStart.lat,
x1 = segmentStart.lng,
y2 = segmentEnd.lat,
x2 = segmentEnd.lng,
a = (y2 - y1) / (x2 - x1),
b = y1 - a * x1,
b0 = y0 + 1/a * x0,
xi = a * (b0 - b) / ((a * a) + 1),
yi = a * xi + b,
intersectingPoint = new H.geo.Point(yi, xi);
// if calculated intersecting point is within the segment,
// calculate distance between intersecting point and given point
if ( (xi > x1 && xi < x2 || xi > x2 && xi < x1) &&
(yi > y1 && yi < y2 || yi > y2 && yi < y1) ) {
return point.distance(intersectingPoint)
} else {
// else calculate distance between segment edges and given point
// and return the smaller one
return Math.min(point.distance(segmentStart), point.distance(segmentEnd));
}
}
// test: (result is 14359)
console.log(distanceToGeoPolygon(lakeMcClure.getGeometry(), yosmitePark.getGeometry()));
关于javascript - JavaScript API : Calculate distance from Polygon to marker 的 HERE map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61319246/
我正在尝试在使用 jOOQ (3.9.x) 时在 MySQL POLYGON 类型和 Jts Polygon 之间进行无缝转换。理想情况下,我只想将数据库中的 WKT(众所周知的文本)解析为 Jts
文档字符串说: Polygon.contains 如果几何包含另一个则返回 True,否则返回 False Polygon.within 如果几何体在另一个几何体内部则返回 True,否则返回 Fal
我有一个包含 1000 个多个重叠多边形的大型 shapefile。我试图在这些多个重叠多边形之外合并区域,这些多边形不与图层中的任何多边形重叠。这些实际上是火灾多次燃烧的区域,我正在寻找火灾仅燃烧一
我有两个问题: 1.) 我刚刚找到了 boost 1.53 Polygon 实现(在 http://www.boost.org/doc/libs/1_53_0/libs/polygon 上)并且想测试
所以我想在 javascript 中合并相邻的多边形,这就是我的代码实际拥有的内容: 我想删除内部笔划但保留边框笔划。 所以我想从这里开始: 对此: 我想保留巴黎的洞 - 我可以定义必须对哪些多边形进
我有一个 geojson 文档,我想对其执行一些 GEOS 转换,例如:计算交点、从另一个多边形中减去多边形等。 我已经能够创建 geo_types::Polygon来自文档,但无法将其转换为 GEO
我正在尝试展示纽约州 COVID 病例的增长情况 这段代码得到了我想要的情节,但没有动画或时间方面。 完整错误: Error in insert_points(polygon$x, polygon$y
我正在尝试使用多边形实现地理围栏系统。基本上,如果用户进入地理围栏区域,用户应该会收到通知。经过许多研究后,我只能使用 Circular 找到 Geofence。到目前为止,我实现了该系统,但它仅通过
所以,我做了一个棱镜: width=30 thickness=15 polyhedron( points=[ [width,0,0],[width,0,thickness],
我正在尝试在 openscad 中创建一个风扇管道,将管道从圆形展平为椭圆形。有没有办法在openscad中做到这一点?如果没有,是否还有其他编程方式来生成这种类型的 3d 模型? 谢谢 丹尼斯 最佳
我有许多多边形,每个多边形都表示为一个点列表。我正在寻找一种快速算法来遍历多边形列表并取消所有交叉边,直到没有交叉边为止。 当前版本的伪代码: While True: For each pai
我在整个互联网和科学数据库中搜索了一篇关于单调多边形的 Delaunay 三角剖分的论文。我不是在寻找任意的多边形三角剖分,而是在寻找 Delaunay 三角剖分。有人知道这样的出版物,其中单调多边形
我有一个 2D 多边形,我想将其缩小特定的偏移量 (A) 以匹配原始多边形的特定面积比 (R)。 是否有解决此类问题的公式或算法?我对三角形/四边形的简单解决方案以及复杂多边形的解决方案感兴趣。 我附
我有一个由点列表组成的二维多边形,我想检查给定点是否位于该多边形中,但我找不到检查这个的好方法。 谁能指出我正确的方向? 最佳答案 http://en.wikipedia.org/wiki/Point
在我的调查过程中,我一直试图为拟议的风力涡轮机开发找到合适的位置,通过这个我计算了合适的区域,如图 1 所示。但我仍然试图找到一种方法来计算可能的涡轮机数量位于该多边形内部,由于涡轮机不能在彼此的 6
如何从一组固定位置的多边形中选择最少数量的多边形,其并集覆盖输入多边形? 例如,让我们考虑以下输入,其中绿色多边形是查询集,蓝色多边形是查询: 正确的覆盖应该是两个多边形: 如何计算哪些多边形最有效地
我正在使用传单绘制来创建多边形。我的要求是当用户绘制多边形时,它不应与现有多边形相交/重叠。我已经使用多边形传单中的点来检测点是否落在多边形内并且它正在工作,但问题是我无法检测一条线是否穿过另一个多边
我问是否有任何特定的顺序需要输入我的坐标集以使用 Java 中的 Graphics2D 类绘制多边形。 例如,对于 X 和 Y 坐标数组,我的坐标(X,Y)的值是否需要按降序/升序排列?或者另一个例子
我正在处理 IfcFace .我得到了一个带孔的简单多边形,我需要将它转换为多个没有孔的简单多边形,以便我的 CAD 进一步处理它。一个小演示说明: 我最好的方法是进行约束德劳内三角剖分并将三角形重新
我正在使用 NLCD 数据处理一个巨大的区域,7 个州的森林和非森林。在一些森林区域内有一 block 地 block (这是我正在研究的硕士论文)。我用这个大数据集让我问过的每个人都难过,但我们确信
我是一名优秀的程序员,十分优秀!