2015-04-11 8 views
8

Ich versuche, die Google Places-API zu verwenden, und möchte meine Suche nur nach Sportarttypen filtern.Verwendung von Android PlaceFilter mit der Google Places-API

Ich verwende den Code gegeben bei https://developers.google.com/places/

public void onPickButtonClick(View v) { 
// Construct an intent for the place picker 
try { 
    PlacePicker.IntentBuilder intentBuilder = 
     new PlacePicker.IntentBuilder(); 
    Intent intent = intentBuilder.build(this); 
    // Start the intent by requesting a result, 
    // identified by a request code. 
    startActivityForResult(intent, REQUEST_PLACE_PICKER); 

} catch (GooglePlayServicesRepairableException e) { 
    // ... 
} catch (GooglePlayServicesNotAvailableException e) { 
    // ... 
} 
} 

@Override 
protected void onActivityResult(int requestCode, 
    int resultCode, Intent data) { 

if (requestCode == REQUEST_PLACE_PICKER 
    && resultCode == Activity.RESULT_OK) { 

    // The user has selected a place. Extract the name and address. 
    final Place place = PlacePicker.getPlace(data, this); 

    final CharSequence name = place.getName(); 
    final CharSequence address = place.getAddress(); 
    String attributions = PlacePicker.getAttributions(data); 
    if (attributions == null) { 
     attributions = ""; 
    } 

    mViewName.setText(name); 
    mViewAddress.setText(address); 
    mViewAttributions.setText(Html.fromHtml(attributions)); 

} else { 
    super.onActivityResult(requestCode, resultCode, data); 
} 
} 

Was ich zu tun versuchte, unter einen Filter zu erstellen, wie und fügen Sie irgendwie, dass (placeFilter) an die Absicht.

PlacePicker.IntentBuilder intentBuilder = new PlacePicker.IntentBuilder(); 
PlaceFilter placeFilter; 
ArrayList<String> restictToGyms = new ArrayList<>(); 
restictToGyms.add("44"); 
placeFilter = new PlaceFilter(false, restictToGyms); 
intent.SOMEHOWADD(placeFilter); 
Intent intent = intentBuilder.build(this); 

Aber ich bin mir nicht sicher, wie man diesen Filter der Absicht hinzufügt. Ich bin mir nicht sicher, ob dies der richtige Weg ist. Irgendwelche Hinweise werden geschätzt. Vielen Dank!

+0

Es gibt derzeit eine offene Feature-Anfrage dafür: https://issuetracker.google.com/issues/35826944 Fühlen Sie sich frei zu "Stern" es vielleicht könnte es helfen. – meh

Antwort

2

Ich habe mir das Gleiche zu tun. Leider scheint es nicht möglich zu sein - der PlaceFilter findet statt IDs, nicht Typen. Die Klasse PlaceFilter ist endgültig und kann daher nicht erweitert werden (ich hasse es, wenn API-Autoren Klassen endgültig machen, es gibt fast nie einen Grund dafür). Sie müssen den Aufruf tatsächlich durchführen und die Filterung über eine Schleife durchführen, nachdem das Ergebnis zurückgegeben wurde.

Verwandte Themen