2015-10-10 35 views
7

目前,地點選擇器顯示地圖上標註的所有地點。地點列表位於屏幕的底部。如何通過PlaceType過濾Place Picker的結果?

如果我可以按地點類型過濾地點,那就太好了。

例如,地圖和列表只顯示附近的出租車站。

我的Java代碼:

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.Menu; 
import android.widget.Toast; 
import com.google.android.gms.common.GooglePlayServicesNotAvailableException; 
import com.google.android.gms.common.GooglePlayServicesRepairableException; 
import com.google.android.gms.location.places.Place; 
import com.google.android.gms.location.places.ui.PlacePicker; 


public class PlacesAPIActivity extends AppCompatActivity { 

    private int PLACE_PICKER_REQUEST = 1; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_places_api); 

       PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder(); 
       Intent intent; 
       try { 
        intent = builder.build(getApplicationContext()); 
        startActivityForResult(intent, PLACE_PICKER_REQUEST); 
       } catch (GooglePlayServicesRepairableException e) { 
        e.printStackTrace(); 
       } catch (GooglePlayServicesNotAvailableException e) { 
        e.printStackTrace(); 
       } 

      } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu_place_api, menu); 

     return true; 
    } 

    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == PLACE_PICKER_REQUEST) { 
      if (resultCode == RESULT_OK) { 

       Place place = PlacePicker.getPlace(data , this) ; 

       String toastMsg = String.format("Place: %s %s", place.getName(), place.getPhoneNumber()); 
       Toast.makeText(this, toastMsg, Toast.LENGTH_LONG).show(); 
      } 
     } 
    } 

} 

我的XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" 
android:background="@drawable/bg_gradient"> 

回答

0

一個解決辦法可能是檢查PlaceType並採取相應措施:

if (!place.getPlaceTypes().contains(1013)){ // 1013 = point of interest 
// Do action if Selected place not a point of interest 
}