- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
您好,我目前正在开发一款谷歌地图应用。
我想要以下效果:
为此,我首先在国家/地区上创建一个多边形叠加层,然后为具有特定 KM 半径的突出显示区域在该多边形上添加一个孔,以便在缩放时缩小和扩展。
现在我知道如何创建多边形了;
mMap.addPolygon(new PolygonOptions().addAll(sCountryBorder).fillColor(0xcc000000));
现在我想在这个多边形上加一个洞,但我不知道如何生成一个具有正确半径的圆孔。
mMap.addPolygon(new PolygonOptions().addAll(sCountryBorder).fillColor(0xcc000000).addHole({CIRCULAR_HOLE}));
我知道可以在 Google map 中创建一个具有特定半径的圆,是否也可以以某种方式将其转换为 LatLng 对象数组?
mMap.addCircle(new CircleOptions()
.center(newLocation)
.radius(mRadius.size)
.strokeWidth(0)
.fillColor(getResources().getColor(R.color.transparant)));
最佳答案
不幸的是,谷歌地图库不允许获取圆的 LatLng 数组。所以你需要自己画一个圆圈。
基本上,您需要提供一种方法来为填充 map 的多边形创建孔(圆)。
有 3 个步骤。
第一步是构建一种方法,该方法将创建一个覆盖整个 map 的多边形。
private static List<LatLng> createOuterBounds() {
float delta = 0.01f;
return new ArrayList<LatLng>() {{
add(new LatLng(90 - delta, -180 + delta));
add(new LatLng(0, -180 + delta));
add(new LatLng(-90 + delta, -180 + delta));
add(new LatLng(-90 + delta, 0));
add(new LatLng(-90 + delta, 180 - delta));
add(new LatLng(0, 180 - delta));
add(new LatLng(90 - delta, 180 - delta));
add(new LatLng(90 - delta, 0));
add(new LatLng(90 - delta, -180 + delta));
}};
}
第 2 步 是创建一个方法,该方法将返回带有圆的 LatLng
的 Iterable
。
private static Iterable<LatLng> createHole(LatLng center, int radius) {
int points = 50; // number of corners of inscribed polygon
double radiusLatitude = Math.toDegrees(radius / (float) EARTH_RADIUS);
double radiusLongitude = radiusLatitude / Math.cos(Math.toRadians(center.latitude));
List<LatLng> result = new ArrayList<>(points);
double anglePerCircleRegion = 2 * Math.PI / points;
for (int i = 0; i < points; i++) {
double theta = i * anglePerCircleRegion;
double latitude = center.latitude + (radiusLatitude * Math.sin(theta));
double longitude = center.longitude + (radiusLongitude * Math.cos(theta));
result.add(new LatLng(latitude, longitude));
}
return result;
}
3 和最后一步 是使用这些方法创建PolygonOptions
。
static PolygonOptions createPolygonWithCircle(Context context, LatLng center, int radius) {
return new PolygonOptions()
.fillColor(ContextCompat.getColor(context, R.color.grey_500_transparent))
.addAll(createOuterBounds())
.addHole(createHole(center, radius))
.strokeWidth(0);
}
我还创建了一个演示存储库,其中包含一个可以绘制所需圆圈的应用程序。 https://github.com/AntonyGolovin/Google-Map-mask .所有需要的逻辑都包含在 MapHelper.java 中类(class)。
结果:
关于android google maps Polygon 添加圆孔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39124706/
我正在尝试在使用 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 (这是我正在研究的硕士论文)。我用这个大数据集让我问过的每个人都难过,但我们确信
我是一名优秀的程序员,十分优秀!