5

GoogleマップAPIとGoogleプレイスAPIを初めて使用しています。私は、各病院へのルートでユーザの位置に最も近いリスト病院(例えば)を表示するデモアプリケーションを実行しています。AndroidのGoogle Maps APIを使用して近隣の場所の結果をユーザーの場所から取得する

public class MainActivity extends ActionBarActivity { 
    private GoogleMap map; 
    UiSettings mapSettings; 

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

     map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 

     if (map != null) { 
      // map.addMarker(new MarkerOptions().position(myLocation).title("Start")); 
      map.setMyLocationEnabled(true); 
      mapSettings = map.getUiSettings(); 
      mapSettings.setScrollGesturesEnabled(true); 
      mapSettings.setZoomControlsEnabled(true); 
     } 
    } 
} 

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:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> 

    <fragment 
     android:id="@+id/map" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     class="com.google.android.gms.maps.MapFragment" /> 


</RelativeLayout> 

私の質問どのように私はGoogleプレイスのAPIを使用して、病院のリストを取得し、それらを表示しない、私は以下のコードでユーザの位置を取得することができました。アドバイス、ヒント、ウォークスルー、チュートリアルは実際にはappericaited.Thanksアドバイスです。

+0

[近くの場所](https://developers.google.com/places/android-api/)for Android、bro。希望の助けを^^ –

+2

これは助けになる... https://developers.google.com/places/web-service/ 誰かがjsonを探していて、自分のアプリにマップを入れたくない場合 – therealprashant

答えて

14

Androidの場合、Place picker for Androidを使用しようとしました。アプリにbuilt-in place picker UI widgetを追加できるため、ユーザーは地図上に表示されている近くの場所のセットから選択できます。それは使いやすい、あなただけ行う必要があるのです:

int PLACE_PICKER_REQUEST = 1; 
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();  
startActivityForResult(builder.build(this), PLACE_PICKER_REQUEST); 

それはあなたのための場所を選択するには、以下のUIが表示され、あなたは以下の使用して場所の情報を取得することができます

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", place.getName()); 
     Toast.makeText(this, toastMsg, Toast.LENGTH_LONG).show(); 
    } 
    } 
} 

enter image description here

詳細については、ガイドhereとコードhereを参照してください。

ビルドUIの機能がないため、場所の種類を設定できません。実際に設定する必要がある場合は、Google Places API Web Service APIhereを使用して自分で場所を検索し、JSONデータを解析して独自のUI。

近隣検索では、指定した地域内の場所を検索できます。キーワードを指定するか検索している場所のタイプを指定することで、検索リクエストを絞り込むことができます。

周辺検索リクエストは、次の形式のHTTP URLです:パラメータにあなたは合格する方法についてtypes=hospital

EDIT

例を設定する必要があること

https://maps.googleapis.com/maps/api/place/nearbysearch/output?parameters 

は注意google places API Web API WebサービスAPIを使用してJSONの特定の場所を検索するリクエスト。このような

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670,151.1957&radius=500&types=food&name=cruise&key=API_KEY

とレスポンスJSON::このため

要求

location: -33.8670,151.1957 
radius: 500 
types: food 
name: cruise 
key: API_KEY 

のURL

{ 
    "debug_log" : { 
     "line" : [] 
    }, 
    "html_attributions" : [], 
    "logging_info" : { 
     "experiment_id" : [], 
     "query_geographic_location" : "AU" 
    }, 
    "results" : [ 
     { 
     "geometry" : { 
      "location" : { 
       "lat" : -33.86879, 
       "lng" : 151.194217 
      } 
     }, 
     "icon" : "http://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png", 
     "id" : "21a0b251c9b8392186142c798263e289fe45b4aa", 
     "name" : "Rhythmboat Cruises", 
     "opening_hours" : { 
      "open_now" : false, 
      "weekday_text" : [] 
     }, 
     "photos" : [ 
      { 
       "height" : 426, 
       "html_attributions" : [ 
        "\u003ca href=\"https://www.google.com/maps/views/profile/104066891898402903288\"\u003eRhythmboat Cruises\u003c/a\u003e" 
       ], 
       "photo_reference" : "CmRdAAAA-YL_I_Gk02blOX6S0nKHry8PFu9pDyp3Y9AnqISsa3Eq8mkbdD5mXuu1Fax60s0nSy3iiX-h5j-ztyLHcc1-782MsLQsgLLa4t3ZgDmCMll-a8ABapZGnZwDKByk67LFEhBgedv_u_eYFsEo9ay8jxJjGhTUHKPJ4G82vBJqSNliuv7UlAtclw", 
       "width" : 640 
      } 
     ], 
     "place_id" : "ChIJyWEHuEmuEmsRm9hTkapTCrk", 
     "reference" : "CnRmAAAAvQlMKw-XtxEY4vWFCvudF7CEMQGI5ycNbfVgGl9rAF75fdiPOiLJw1k9NL2v8ZIJsOJuRS3Lm9Dw1vga4ajycAs7PlxN1MVnnYT9la0pBvEvSQNlyvszKANS1R4P7Mvk_jhqswMggqCUtwJ13LN2hRIQOiAkLTWUi3DOjVVOw7J5IRoUb_cJyJaJNqKdmkDM2f0OjQjh9F0", 
     "scope" : "GOOGLE", 
     "types" : [ "restaurant", "food", "point_of_interest", "establishment" ], 
     "vicinity" : "Pyrmont Bay Wharf (Near Australia Maritime Museum), Pyrmont, NSW 2009" 
     }, 
     { 
     "geometry" : { 
      "location" : { 
       "lat" : -33.867591, 
       "lng" : 151.201196 
      } 
     }, 
     "icon" : "http://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png", 
     "id" : "a97f9fb468bcd26b68a23072a55af82d4b325e0d", 
     "name" : "Australian Cruise Group", 
     "opening_hours" : { 
      "open_now" : false, 
      "weekday_text" : [] 
     }, 
     "photos" : [ 
      { 
       "height" : 1331, 
       "html_attributions" : [ 
        "\u003ca href=\"https://www.google.com/maps/views/profile/110751364053842618118\"\u003eAustralian Cruise Group\u003c/a\u003e" 
       ], 
       "photo_reference" : "CmRdAAAAtEoj29FJcNBccrsu6bHt0xgwVGhYlciCY1fe6gTr_d5_KkeP3LITnOwnpNRJWnX39B04-aIBOKXKJH6ltx948T5vWIYBoah1yZDXsWngWZ5kMsK7xyCB5P_q_xBIBxxUEhAYWeB4PiOm_Jy093fB-j0iGhSYmIs9xB2aa6u-RH8V8lZEk-Q5ig", 
       "width" : 2000 
      } 
     ], 
     "place_id" : "ChIJrTLr-GyuEmsRBfy61i59si0", 
     "reference" : "CnRqAAAAFbukrZvRNsc05TreHUCrPEya5NcN9v0fFLLaK-D1fSyxFTuQlUDhDstU3qwXKw_fADX4W6guUkexax1nufgiYIuGCKoZPEnup1r-LhGGNz9dn1uf9Of5iOtZ1XgCeDjJaYvGbSB3C0pAXL8r9kOsmhIQbx2Sia2DAWTjtSZwuh5aehoUhM6upqBCDLhGruZAGGsCOwAiIq8", 
     "scope" : "GOOGLE", 
     "types" : [ 
      "restaurant", 
      "travel_agency", 
      "food", 
      "point_of_interest", 
      "establishment" 
     ], 
     "vicinity" : "32 The Promenade, King Street Wharf 5, Sydney" 
     }, 
     { 
     "geometry" : { 
      "location" : { 
       "lat" : -33.870943, 
       "lng" : 151.190311 
      } 
     }, 
     "icon" : "http://maps.gstatic.com/mapfiles/place_api/icons/bar-71.png", 
     "id" : "e644f7f34cf875b9919c6548f1b721947362850a", 
     "name" : "Lunch Cruise with Jazz on Sydney Harbour", 
     "opening_hours" : { 
      "open_now" : false, 
      "weekday_text" : [] 
     }, 
     "photos" : [ 
      { 
       "height" : 292, 
       "html_attributions" : [ 
        "\u003ca href=\"https://www.google.com/maps/views/profile/105423912060796272053\"\u003eFrom a Google User\u003c/a\u003e" 
       ], 
       "photo_reference" : "CmRdAAAAR4bqFTKYWdBwZwdBdON_JRD7V_joTwwIPwRUpZIZWkSSd8GQ3P2O-_aQbUJdL2RhoAyzCUIF0f--DI4oXFneTpj5zZfFq-iFiT7i_x0tjnDveIY8tJv-6o0uWSSjYqabEhCKqQWZqrKAoddjDcc64N48GhQZ2T1_ntPzNKCooHpZzlYQ7AxFOA", 
       "width" : 438 
      } 
     ], 
     "place_id" : "ChIJLfySpTOuEmsRPCRKrzl8ZEY", 
     "reference" : "CoQBewAAAFd2fO_YWGTiT4RzXWb5tsOuOt7YyV_ScQOwm0tqJSrAyACCczeOzV-P_mgZLro1oKP_34Nt0nVC_1OEKAQUcd7cUm7xmAMSX-EkbSWiD0kOWGgGgKuDRtb0t_8qsxBGU_izugWCyK7SRWezTxELYNdkS0OEiSWPnvhxvXuQktBBEhAAtEe7fagW2kUR14T1QpVsGhQBO7YpIyYSPvo4zUJuL_bX30nJZw", 
     "scope" : "GOOGLE", 
     "types" : [ "bar", "restaurant", "food", "point_of_interest", "establishment" ], 
     "vicinity" : "37 Bank St, Pyrmont" 
     } 
    ], 
    "status" : "OK" 
} 

次の例では、ロンドン、イングランド近くの病院のリストを返します。 。

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=51.503186,-0.126446&radius=5000&types=hospital&key=API_KEY 

詳細については、hereを参照してください。

+0

ありがとうまさに私が探していたものです。 google places API Web API WebサービスAPIを使用してJSONの特定の場所の検索リクエストを渡す方法の例を教えてください。検索が静的である必要があるため(つまり、ユーザーの場所に基づいて映画館などの1つの場所を常に検索します) – 9it3e1

+0

遅れて返事を申し訳ありません、私は休暇中ですBTW :)私の答えで編集を参照してください。 – bjiang

+0

APIキーがリンクで渡されますかGoogle Place APIについてお話していますか? –

2

このリンクをたどって、それはすべてのそれは「病院」であると置き換えると、あなたが行ってもいいだろう、String型=「grocery_or_supermarket」で、

を説明しています

http://androidmastermind.blogspot.co.ke/2016/06/android-google-maps-with-nearyby-places.html

+0

あなたのクレームをバックアップするために、見積もりや必要なデータを提供することで、あなたの答えを改善することができます: 'String type = '食料品[...] '。この参照を参照してください:http://stackoverflow.com/help/referencing – SoAwesomeMan

0
private void loadNearByPlaces(double latitude, double longitude) 

//YOU Can change this type at your own will, e.g hospital, cafe, restaurant.... and see how it all works 
{ 


    mMap.clear(); 
    Intent i = getIntent(); 
    String type = hospital; 

    StringBuilder googlePlacesUrl = 
      new StringBuilder("https://maps.googleapis.com/maps/api/place/nearbysearch/json?"); 
    googlePlacesUrl.append("location=").append(latitude).append(",").append(longitude); 
    googlePlacesUrl.append("&radius=").append(PROXIMITY_RADIUS); 
    googlePlacesUrl.append("&types=").append(type); 
    googlePlacesUrl.append("&sensor=true"); 
    googlePlacesUrl.append("&key=" + GOOGLE_BROWSER_API_KEY); 

    JsonObjectRequest request = new JsonObjectRequest(googlePlacesUrl.toString(), 
      new Response.Listener<JSONObject>() { 
       @Override 
       public void onResponse(JSONObject result) { 

        Log.i(TAG, "onResponse: Result= " + result.toString()); 
        parseLocationResult(result); 
       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        Log.e(TAG, "onErrorResponse: Error= " + error); 
        Log.e(TAG, "onErrorResponse: Error= " + error.getMessage()); 
       } 
      }); 

    AppController.getInstance().addToRequestQueue(request); 
} 

これは、あなたの場所に応じて病院で近くにロードされます。