【问题标题】:Google Places API Android filter according to place type根据地点类型的 Google Places API Android 过滤器
【发布时间】:2017-01-03 08:50:38
【问题描述】:

我正在尝试过滤附近的地方,特别是医院。我正在使用适用于 Android 的 Google Places API。我下面的代码没有任何错误,但没有显示任何医院。

List<String> filters = new ArrayList<>();
filters.add(String.valueOf(Place.TYPE_HOSPITAL));
PlaceFilter placeFilter = new PlaceFilter(false, filters);

PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi
                .getCurrentPlace(mGoogleApiClient, placeFilter);
        result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() {
            @Override
            public void onResult(PlaceLikelihoodBuffer likelyPlaces) {
                for (PlaceLikelihood placeLikelihood : likelyPlaces) {

                    mMap.addMarker(new MarkerOptions()
                            .position(placeLikelihood.getPlace().getLatLng())
                            .title((String) placeLikelihood.getPlace().getName())
                            .snippet((String) placeLikelihood.getPlace().getPhoneNumber()));
                }
                likelyPlaces.release();
            }
        });

【问题讨论】:

  • 看看这个链接希望对你有帮助,stackoverflow.com/a/34057884/5722385
  • @Mrinmoy 我正在使用适用于 Android 的 Google Places API
  • 是的,我看到了,这就是我要问的问题,您是否可以按照链接建议的方式进行更改
  • @Mrinmoy 不,我需要这样做
  • 搜了很多还是没有头绪,有人说不可能,看这个链接stackoverflow.com/a/35425437/5722385

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


【解决方案1】:

您可以使用placeLikelihood.getPlace().getPlaceTypes(),然后使用 for 循环并搜索类别的具体编号 https://developers.google.com/android/reference/com/google/android/gms/location/places/Place.html?hl=es-419#TYPE_RESTAURANT

【讨论】:

    【解决方案2】:

    我同意上面的回答。这是一个带回“RESTAURANT”类型位置的循环示例。它使用 [https://developers.google.com/places/android-sdk/place-details#get-place]

    中描述的地点似然方法
    //Looping through each placeLikelihood objects.
    for(PlaceLikelihood placelikelihood : response.getPlaceLikelihoods){
        //Convert the place types obtaines from Place Likelihood into an array so that we can loop through
        Object[] typeOfPlace = placeLikelihood.getPlace().getTypes().toArray();
        for(Object placeType : typeOfPlace){
           if(placeType.toString().equals("RESTAURANT")){
               Timber.i("Place is %s", placeLikelihood.getPlace().getName);
           }        
        }   
    }
    

    考虑到这一点,我认为这会对您有所帮助。

    for(PlaceLikelihood placeLikelihood : likelyPlaces){
        Object[] typeOfPlace = placeLikelihood.getPlace().getTypes().toArray();
        for(Object placeType : typeOfPlace){
                if(placeType.toString().equals("HOSPITAL")){
                    mMap.addMarker(new MarkerOptions()
                            .position(placeLikelihood.getPlace().getLatLng())
                            .title((String) placeLikelihood.getPlace().getName())
                            .snippet((String) 
                             placeLikelihood.getPlace().getPhoneNumber()));
    
                }
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2017-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多