【问题标题】:How do I adjust the search radius of places in Google Maps API?如何在 Google Maps API 中调整地点的搜索半径?
【发布时间】:2018-07-30 06:15:10
【问题描述】:

发送请求时,我使用 parameter 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");

同一个Circle,距离我的位置 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 米的圆圈中,但实际上我得到了这个:

image from my device

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

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

【问题讨论】:

    标签: android google-maps google-places-api


    【解决方案1】:

    This 文档说 -

    该区域内的结果将排名高于结果 搜索圈外;然而,来自外部的显着结果 可能包括搜索半径。

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

    1. 在依赖项中包含 Map-utils -

    实现'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));
        }
    }
    

    【讨论】:

    • 谢谢!你的解释帮助了我。我做了另一个,因为我已经有距离了。只是在重绘标记的方法中添加了这样一个循环: if (distance
    猜你喜欢
    • 2013-08-24
    • 2020-01-30
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 2013-02-11
    • 2014-07-12
    • 1970-01-01
    相关资源
    最近更新 更多