尝试从 geojson 文件中绘制多个多边形时,我真的很痛苦。下面我粘贴了 geojson 文件的示例和用于访问它的 javascript。我遇到的主要问题似乎是我无法进入嵌套在每个记录中的坐标数组,因为它要么返回“坐标”未定义的错误,要么没有未定义的方法“setMap”。我已经能够返回类似 JSON 文件的其他嵌套方面(这是一个测试文件,真正的文件实际上有数据,只是试图在此处获取多边形图),但是获取这些坐标不起作用。我不是 javascript 高手,所以我不知道代码在哪里无法正确访问。
提前致谢。
json 数据如下所示:
var data={
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"id": 1,
"properties": {
"Name": "",
"description": "",
"timestamp": "",
"begin": "",
"end": "",
"altitudeMode": "clampToGround",
"tessellate": 1,
"extrude": -1,
"visibility": -1
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
-83.126571,
42.348706
],
[
-83.126520,
42.348634
],
[
-83.126516,
42.348635
],
[
-83.126147,
42.348778
],
[
-83.126144,
42.348780
],
[
-83.126195,
42.348852
],
[
-83.126199,
42.348851
], …Run Code Online (Sandbox Code Playgroud) 我试图找出一个点是否在 3D 多边形中。我使用了另一个我在网上找到的脚本来处理很多使用光线投射的 2D 问题。我想知道如何将其更改为适用于 3D 多边形。我不会看那些有很多凹面或孔洞或任何东西的非常奇怪的多边形。这是python中的2D实现:
def point_inside_polygon(x,y,poly):
n = len(poly)
inside =False
p1x,p1y = poly[0]
for i in range(n+1):
p2x,p2y = poly[i % n]
if y > min(p1y,p2y):
if y <= max(p1y,p2y):
if x <= max(p1x,p2x):
if p1y != p2y:
xinters = (y-p1y)*(p2x-p1x)/(p2y-p1y)+p1x
if p1x == p2x or x <= xinters:
inside = not inside
p1x,p1y = p2x,p2y
return inside
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!谢谢你。
所以 - 这是我很少会问“我该怎么做”的问题之一,我实际上什么也没尝试,因为我不知道从哪里开始。
这是我的问题。
我有一张照片,我在绿色屏幕上键入了它,然后变成了一个蒙版,其中我有一些透明的像素,其余的像素是黑色的。假设这个黑色形状是照片主体的上胸部和头部。
我知道如何找到所有的黑色像素,我可以很容易地找出哪些黑色像素与透明像素相邻,这样我就可以轻松画出黑色形状的轮廓,但这就是我没有想法的地方……我该如何转换它将轮廓转换为可用作多边形的连续点数组?
我试图理解点属性中的第一个和最后一个数字值代表什么,但 MDN 似乎没有解释这一点,它实际上说需要有两个数字,但是我不断看到第一个和最后一个模式。我一直注意到有一些数字对,这些值代表点的 x 轴和 y 轴,但是它们只是一个数字,在开始和结束时不是一对?
<svg height="210" width="500">
<polygon points="100,10 40,198 190,78 10,78 160,198">//what does first and last number mean?
<style="fill:lime;stroke:purple;stroke-width:5;fill-rule:evenodd;" />
</svg>
Run Code Online (Sandbox Code Playgroud) 我正在制作一个自定义Google地图,我需要在其中放置由多个多边形组成的地方标记.当我使用KML文件时,多边形会合并在一起,但是我不得不放弃KML,因为需要以编程方式从页面上的其他项目中显示信息窗口.
现在我正在直接绘制多边形(新的google.maps.Polygon),我发现有时这些项目通过union和somethings通过相交来连接.这似乎与有多少重叠有关.
我的多边形正在构建具有相应标签的形状,因此我希望尽可能将两者保持为单独的路径(尽管这不是必需的).
有可能我错过了一个告诉引擎如何加入路径的设置吗?PolygonOptions没有显示任何内容,但也许有一个隐藏的功能来执行此操作.
我有一张包含一组彩色多边形的地图。有时我想将每个多边形的填充颜色从任何颜色更改为透明。我有以下代码:
polys[x].setOptions({
fillColor: "#FFFFFF",
fillOpacity: .01, //This changes throughout the program
strokeColor: '#000000',
});
Run Code Online (Sandbox Code Playgroud)
如何将fillColor设置为透明?是否有特定的十六进制值?
我在传单地图上绘制了一个多边形,我在一个闪亮的应用程序中使用它。每次触发事件时,我想删除旧的多边形并在其上绘制新的多边形。那不起作用-我想我用layerId错了?
对此有任何提示吗?
# draw polygons
observeEvent(da$ar, {
# remove polygon
removeShape(map, layerId = unique(10))
leafletProxy("myMap") %>% addPolygons(data = da$ar, stroke = TRUE,
fillOpacity = 0.5, smoothFactor = 0.5,
layerId = unique(10)
)
})
Run Code Online (Sandbox Code Playgroud) 所以我是 MySql 中 ST_ 函数的新手,我认为我错过了一些东西。我试图在 MySql 中保存多边形,问题是当使用该函数ST_GEOMFROMTEXT并给出从 Google Maps Javascript API 获取的多边形坐标时,它会返回错误:Invalid GIS data provided to function st_geometryfromtext。
我在互联网上读了很多,但到处都说这是版本问题,这里的问题是我现在有最新的(5.7.19)
这些是我尝试过的以下查询
# WORKS
SELECT ST_GEOMFROMTEXT('POLYGON((13.517837674890684 76.453857421875,13.838079936422464 77.750244140625,14.517837674890684 79.453857421875,13.517837674890684 76.453857421875,13.517837674890684 76.453857421875))');
# ALL BELLOW RETURN ERROR
SELECT ST_GEOMFROMTEXT('POLYGON((19.4254572621497 -99.17182445526123, 19.42574056861496 -99.16570901870728, 19.421551629818985 -99.16558027267456, 19.421288552764135 -99.17210340499878))');
SELECT ST_GEOMFROMTEXT('POLYGON((-99.17182445526123 19.4254572621497, -99.16570901870728 19.42574056861496, -99.16558027267456 19.421551629818985, -99.17210340499878 19.421288552764135 ))');
SELECT ST_GEOMFROMTEXT('POLYGON((19.4249108840002 -99.17023658752441, 19.424951356518726 -99.16802644729614, 19.423393157277722 -99.16796207427979, 19.423393157277722 -99.17019367218018))')
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么上面的这些查询失败了?非常感谢大家
我可以使用以下代码在谷歌地图上绘制 3 个多边形区域,
var var_2 = [
<< latitude, longitudes>>.....
];
var boundary2 = new google.maps.Polygon({
paths: var_2,
geodesic: true,
strokeColor: 'blue',
strokeOpacity: 0.2,
strokeWeight: 2,
fillColor: 'blue',
fillOpacity: 0.2
});
boundary2.setMap(map);
boundary2.addListener('click', showArrays);
infoWindow = new google.maps.InfoWindow;
function showArrays(event) {
var vertices = this.getPath();
var contentString = 'AREA_1';
infoWindow.setContent(contentString);
infoWindow.setPosition(event.latLng);
infoWindow.open(map);
}
Run Code Online (Sandbox Code Playgroud)
但是所有 3 个多边形都采用相同的名称“AREA_3”。请帮我解决这个问题。
-谢谢
我正试图在我正在为一个班级制作的小行星的克隆上绘制一个六边形的小行星.
sprite = new Polygon();
sprite.addPoint(0,0);
sprite.addPoint(0,-40);
sprite.addPoint(30,-40);
sprite.addPoint(60,-10);
sprite.addPoint(60,20);
sprite.addPoint(40,50);
sprite.addPoint(-20,50);
sprite.addPoint(-50,20);
sprite.addPoint(50,-10);
sprite.addPoint(20,-40);
Run Code Online (Sandbox Code Playgroud)
然而,当我这样做时,我最终得到了这个

出了什么问题?我把它绘制在一个坐标平面上,并将点复制过来.据我所知,Java会按照我列出点的顺序绘制出来,并且为了让游戏旋转小行星,我在那里有(0,0).