2015-10-10 1 views
7

W tej chwili selektor miejsc pokazuje mapę ze wszystkimi miejscami zaznaczonymi na mapie. Lista miejsc znajduje się u dołu ekranu.jak filtrować wyniki Place Picker według PlaceType?

Byłoby świetnie, gdybym mógł filtrować miejsca według typu miejsca.

Na przykład na mapie i liście będą widoczne tylko postoje taksówek w pobliżu.

Mój kod 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(); 
      } 
     } 
    } 

} 

Moje 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"> 

Odpowiedz

0

obejście mogłoby być sprawdzenie PlaceType i podjąć działania odpowiednio:

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