我在地图上绘制了一个简单的圆圈:
@EJB
private EventFacade eventFacade; // Normal stateless bean
GraphQLSchema guestSchema = new GraphQLSchemaGenerator()
.withOperationsFromSingleton(eventFacade)
.withValueMapperFactory(new JacksonValueMapperFactory())
.withDefaults()
.generate();
GraphQL graphQL = GraphQL.newGraphQL(guestSchema).build();
这完美无缺,按照预期将圆圈绘制到地图上。
问题在于,当我放大和缩小圆圈的大小增加/减少时。
我的问题:
我正在寻找一种在放大和缩小时保持圆圈大小相同的方法。
还..
我不想使用标记聚类。
答案 0 :(得分:0)
基本上你需要做的是定义圆半径的屏幕比例。
在此示例中,它始终为宽度的10%。
鉴于此,然后计算屏幕经度之间的距离,并将该距离除以所需的比例(半径)。
我怀疑你会根据方向想要不同的比例。
此代码段绘制一个圆,其半径为屏幕宽度的10%,然后侦听相机移动(包括缩放)以根据新的经度边界调整半径。
Circle c;
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.getUiSettings().setZoomControlsEnabled(true);
LatLng p = new LatLng(39.171755, -86.510632);
LatLngBounds llb = mMap.getProjection().getVisibleRegion().latLngBounds;
LatLng ne = llb.northeast;
LatLng sw = llb.southwest;
double d = SphericalUtil.computeDistanceBetween(ne,new LatLng(ne.latitude,sw.longitude));
double r = (d/10);
c = mMap.addCircle(new CircleOptions().center(p).radius(r).strokeColor(Color.BLUE));
mMap.setOnCameraMoveListener(new GoogleMap.OnCameraMoveListener() {
@Override
public void onCameraMove() {
LatLngBounds llb = mMap.getProjection().getVisibleRegion().latLngBounds;
LatLng ne = llb.northeast;
LatLng sw = llb.southwest;
double d = SphericalUtil.computeDistanceBetween(ne,new LatLng(ne.latitude,sw.longitude));
double r = (d/10);
c.setRadius(r);
}
});
}
另请注意,圆圈不是标记 - 标题需要更新(可能会在将来帮助搜索者。)