2016-08-21 5 views
0

Я создал API-интерфейс google для своего приложения, в настоящее время он показывает все места поблизости, такие как больницы, рестораны, школы и т. Д. Я хочу, чтобы он показывал только рестораны. Является ли это возможным? Если да, то как? Помощь будет высоко оценена. Спасибо :)Как удалить ненужные места из API google places?

MapActivity.JAVA

package com.golo.acer.mrestro4; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.text.Html; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

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; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.LatLngBounds; 


public class MapActivity extends AppCompatActivity { 
    private static final int PLACE_PICKER_REQUEST = 1; 
    private TextView mName; 
    private TextView mAddress; 
    private TextView mAttributions; 
    private static final LatLngBounds BOUNDS_MOUNTAIN_VIEW = new LatLngBounds(
      new LatLng(27.689753, 85.311188), new LatLng(27.689753, 85.311188)); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_place_picker); 
     mName = (TextView) findViewById(R.id.textView); 
     mAddress = (TextView) findViewById(R.id.textView2); 
     mAttributions = (TextView) findViewById(R.id.textView3); 
     Button pickerButton = (Button) findViewById(R.id.pickerButton); 
     pickerButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       try { 
        PlacePicker.IntentBuilder intentBuilder = 
          new PlacePicker.IntentBuilder(); 
        intentBuilder.setLatLngBounds(BOUNDS_MOUNTAIN_VIEW); 
        Intent intent = intentBuilder.build(MapActivity.this); 
        startActivityForResult(intent, PLACE_PICKER_REQUEST); 

       } catch (GooglePlayServicesRepairableException 
         | GooglePlayServicesNotAvailableException e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

    public void moveToInternalChoiceActivity(View view) { 
     Intent intent = new Intent(this, InternalChoiceActivity.class); 
     startActivity(intent); 
    } 

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

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

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

      mName.setText(name); 
      mAddress.setText(address); 
      mAttributions.setText(Html.fromHtml(attributions)); 

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

} 
+0

Включите ваш код! – khargoosh

+0

Код @khargoosh, указанный выше :) – Bik

ответ

1

place.getPlaceTypes() возвращает список целого, проверьте, если он содержит Place.TYPE_RESTAURANT если найти тип ресторана ваше намерение. Вы можете получить значения типа в классе Place, начиная с TYPE_.

Ref https://developers.google.com/android/reference/com/google/android/gms/location/places/Place

[Редактировать] В коде:

final Place place = PlacePicker.getPlace(this, data); 
List<Integer> types = place.getPlaceTypes(); 
for(Integer i : types){ 
    if (i == Place.TYPE_RESTAURANT){ 
      // its restaurant do something 
     final CharSequence name = place.getName(); 
     final CharSequence address = place.getAddress(); 
     String attributions = (String) place.getAttributions(); 
     if (attributions == null) { 
      attributions = ""; 
     } 

     mName.setText(name); 
     mAddress.setText(address); 
     mAttributions.setText(Html.fromHtml(attributions)); 
    } 
} 

[Edit: (комментарии пользователя)]

То, что вы описываете, как красный значок маркера, вам могут добавить их на карту. , поэтому в вашем onActivityResult вы получите Place (это уже указано в вашем коде). Места содержит имя и позицию, с помощью этого показать маркер на карте, как это:

Marker markerPlace = map.addMarker(new MarkerOptions().position(place.getLatLng()).title(place.getName)); 

Проверьте документацию и соответствующие статьи для маркеров карты.

Теперь, как добавить карту? не спрашивайте меня, проверьте информацию в Интернете http://www.vogella.com/tutorials/AndroidGoogleMaps/article.html#mapsview

+0

Я не совсем понимаю, что вы говорите, можете ли вы изменить мой код? спасибо :) – Bik

+0

проверка изменение пожалуйста. –

+0

показывает ошибку после оператора if. Я хочу отображать рестораны только в местах, расположенных поблизости от мест в Google. Что должно быть после утверждения if? – Bik

Смежные вопросы