如何调整谷歌地图API中的搜索半径



发送请求时,我使用参数radius=300,该参数应显示距离我所在位置300米半径范围内的位置:

StringBuilder stringBuilder = new StringBuilder("https://maps.googleapis.com/maps/api/place/nearbysearch/json?");
stringBuilder.append("location=").append(mLatitude).append(",").append(mLongitude);
stringBuilder.append("&keyword=пятерочка | магнит");
stringBuilder.append("&language=ru");
stringBuilder.append("&radius=300");
stringBuilder.append("&sensor=true");

距离我的位置300米的同一个圆圈:

Circle circle = mMap.addCircle(new CircleOptions()
.center(latLng)
.radius(300).strokeColor(Color.argb(50, 255, 0, 0))
.fillColor(Color.argb(50, 255, 0, 0)));

文件上说,值是以米为单位返回的,这是在300米和圆圈300米的请求中,但事实上我得到了这个:

来自我的设备的图像

是否可以使圆圈显示的半径与请求的半径相匹配?

附言:很抱歉我的英语不好

这个文档说-

此区域内的结果将排名高于结果搜索圈之外;然而,来自外部的突出结果可以包括搜索半径的。

因此,结论是一些突出位置可能显示在您定义的半径之外。但是,您可以在从API获得所有结果后通过实现循环来排除边界之外的结果。

  1. 在依赖项中包含映射实用程序-

实现'com.google.maps.android:android-maps-utils:0.5+'

  1. 计算每个位置与中心的距离,并为边界内的位置设置标记
for (Place place: allPlaces) {
float distance = (float) SphericalUtil.computeDistanceBetween(centreLatLng, place.getLatLng());
if (distance <= 300) {
Marker placeMarker = googleMap.addMarker(new MarkerOptions()
.position(place.getLatLng())
.title(place.getName())
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
.anchor(0.5 f, 1.0 f));
}
}

相关内容

  • 没有找到相关文章

最新更新