[英]Specify an area on Google Map as support area - Google Maps Android Api
我在Android项目中使用Google Map API,一切正常,但我想在地图上有一个支持区域,以允许用户将自己的地址固定在该区域上。
在JavaScript中,有一个kmlLayer
和一个侦听器来查找kmllayer单击。 通过这种方式,我得到了单击点的纬度和经度。
但是在android中,只有setOnFeatureClickListener
侦听器( Google Map Android kmlLayer
文档 ),我想用kml多边形显示我的区域,然后使其可单击或获得图层的单击点的纬度和经度。
除了获得我上面解释的接触点的经度和纬度之外,我还可以获取地图中心坐标。 因此,如果我可以检查地图中心在kml多边形中,那么我的问题就可以解决!
为了解决我的问题,我尝试了许多方法和技术,并提出了许多问题。 在我的一个问题中,我试图在地图图层上触发触摸监听器。
对于英语不好,我也表示歉意,我想我的解释很清楚。如果您不这么认为,请发表评论,我会做更多解释!
首先,您应该创建一个LatLngBounds.Builder
对象,然后像这样遍历KML
的KmlContainer
public void accessContainers(Iterable<KmlContainer> containers) {
for(KmlContainer c : containers) {
if(c.hasPlacemarks()) {
for(KmlPlacemark p : c.getPlacemarks()) {
Geometry g = p.getGeometry();
Object object = g.getGeometryObject();
if(object instanceof LatLng) {
LatLng latlng = (LatLng)object;
latLngBoundsBuilder.include(latlng);
}
if(object instanceof List<?>) {
List<LatLng> list = (List<LatLng>)object;
for(LatLng latlng : list) {
latLngBoundsBuilder.include(latlng);
}
}
Log.d(TAG, g.getGeometryType() + ":" + object.toString());
}
}
if(c.hasContainers()) {
accessContainers(c.getContainers());
}
}
}
现在使用latLngBoundsBuilder.build()
获得一个LatLngBounds
对象。 然后实现setOnCameraIdleListener
并在onCameraIdle
内部检查google map center是否在该范围内
latLngBounds.contains(map.getCameraPosition().target)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.