googlePlaceAPIのplaceを使いこなす | Constant Summary | Android

スポンサーリンク

googlePlaceAPIのplace.types一覧

typeについて特に重要な項目を赤色としました。

属性 意味
TYPE_ACCOUNTING 1 会計
TYPE_ADMINISTRATIVE_AREA_LEVEL_1 1001 管理区域レベル1
TYPE_ADMINISTRATIVE_AREA_LEVEL_2 1002 管理区域レベル2
TYPE_ADMINISTRATIVE_AREA_LEVEL_3 1003 管理区域レベル3
TYPE_AIRPORT 2 空港
TYPE_AMUSEMENT_PARK 3 遊園地
TYPE_AQUARIUM 4 水族館
TYPE_ART_GALLERY 5 ギャラリー(美術館は66)
TYPE_ATM 6 ATM
TYPE_BAKERY 7 ベーカリー
TYPE_BANK 8 銀行
TYPE_BAR 9 バー
TYPE_BEAUTY_SALON 10 ビューティーサロン(美容院は45)
TYPE_BICYCLE_STORE 11 自転車店
TYPE_BOOK_STORE 12 本屋
TYPE_BOWLING_ALLEY 13 ボーリング場
TYPE_BUS_STATION 14 バス停
TYPE_CAFE 15 カフェ
TYPE_CAMPGROUND 16 キャンプ場
TYPE_CAR_DEALER 17 車ディーラー
TYPE_CAR_RENTAL 18 レンタカー
TYPE_CAR_REPAIR 19 自動車修理
TYPE_CAR_WASH 20 洗車
TYPE_CASINO 21 カジノ
TYPE_CEMETERY 22 墓地
TYPE_CHURCH 23 教会
TYPE_CITY_HALL 24 市役所
TYPE_CLOTHING_STORE 25 洋服店
TYPE_COLLOQUIAL_AREA 1004 ??
TYPE_CONVENIENCE_STORE 26 コンビニ
TYPE_COUNTRY 1005
TYPE_COURTHOUSE 27 裁判所
TYPE_DENTIST 28 歯科医
TYPE_DEPARTMENT_STORE 29 デパート
TYPE_DOCTOR 30 医師
TYPE_ELECTRICIAN 31 電気
TYPE_ELECTRONICS_STORE 32 電気店
TYPE_EMBASSY 33 大使館
TYPE_ESTABLISHMENT 34 確立??
TYPE_FINANCE 35 証券会社
TYPE_FIRE_STATION 36 消防署
TYPE_FLOOR 1006 床?
TYPE_FLORIST 37 花屋
TYPE_FOOD 38 フード
TYPE_FUNERAL_HOME 39 葬儀場
TYPE_FURNITURE_STORE 40 家具屋
TYPE_GAS_STATION 41 ガソリンスタンド
TYPE_GENERAL_CONTRACTOR 42 ゼネコン
TYPE_GEOCODE 1007 GEOCODE
TYPE_GROCERY_OR_SUPERMARKET 43 食料品またはスーパーマーケット
TYPE_GYM 44 ジム
TYPE_HAIR_CARE 45 美容院
TYPE_HARDWARE_STORE 46 ハードウェアストア
TYPE_HEALTH 47 健康施設
TYPE_HINDU_TEMPLE 48 ヒンドゥー教寺院
TYPE_HOME_GOODS_STORE 49 ホームセンターなど
TYPE_HOSPITAL 50 病院
TYPE_INSURANCE_AGENCY 51 保険代理店
TYPE_INTERSECTION 1008 交差点
TYPE_JEWELRY_STORE 52 宝石店
TYPE_LAUNDRY 53 ランドリー
TYPE_LAWYER 54 弁護士
TYPE_LIBRARY 55 図書館
TYPE_LIQUOR_STORE 56 酒屋
TYPE_LOCALITY 1009 地方
TYPE_LOCAL_GOVERNMENT_OFFICE 57 地方役所
TYPE_LOCKSMITH 58 錠前屋
TYPE_LODGING 59 宿泊施設
TYPE_MEAL_DELIVERY 60 食事提供
TYPE_MEAL_TAKEAWAY 61 食事テイクアウト
TYPE_MOSQUE 62 モスク
TYPE_MOVIE_RENTAL 63 映画レンタル
TYPE_MOVIE_THEATER 64 映画館
TYPE_MOVING_COMPANY 65 引っ越し会社
TYPE_MUSEUM 66 博物館
TYPE_NATURAL_FEATURE 1010 自然の特徴
TYPE_NEIGHBORHOOD 1011 近所
TYPE_NIGHT_CLUB 67 ナイトクラブ
TYPE_OTHER 0 その他
TYPE_PAINTER 68 ペンキ屋
TYPE_PARK 69 公園
TYPE_PARKING 70 駐車場
TYPE_PET_STORE 71 ペットショップ
TYPE_PHARMACY 72 薬局
TYPE_PHYSIOTHERAPIST 73 物理学者
TYPE_PLACE_OF_WORSHIP 74 崇拝の場
TYPE_PLUMBER 75 PLUMBER
TYPE_POINT_OF_INTEREST 1013 有名な建物など(スカイツリー、国会、高層ビルなど)
TYPE_POLICE 76 警察
TYPE_POLITICAL 1012 政治
TYPE_POSTAL_CODE 1015 郵便番号
TYPE_POSTAL_CODE_PREFIX 1016 郵便番号プレフィックス
TYPE_POSTAL_TOWN 1017 郵便局(郵便局は77が優先)
TYPE_POST_BOX 1014 郵便ポスト
TYPE_POST_OFFICE 77 郵便局
TYPE_PREMISE 1018 施設(図書館など)
TYPE_REAL_ESTATE_AGENCY 78 不動産会社
TYPE_RESTAURANT 79 レストラン
TYPE_ROOFING_CONTRACTOR 80 屋根業者
TYPE_ROOM 1019 部屋
TYPE_ROUTE 1020 ルート
TYPE_RV_PARK 81 RVパーク
TYPE_SCHOOL 82 学校
TYPE_SHOE_STORE 83 靴屋
TYPE_SHOPPING_MALL 84 ショッピングモール
TYPE_SPA 85 スパ
TYPE_STADIUM 86 スタジアム
TYPE_STORAGE 87 倉庫
TYPE_STORE 88 店舗
TYPE_STREET_ADDRESS 1021 住所
TYPE_SUBLOCALITY 1022 サブカルチャー
TYPE_SUBLOCALITY_LEVEL_1 1023 サブレベル1
TYPE_SUBLOCALITY_LEVEL_2 1024 サブレベル2
TYPE_SUBLOCALITY_LEVEL_3 1025 サブレベル3
TYPE_SUBLOCALITY_LEVEL_4 1026 サブレベル4
TYPE_SUBLOCALITY_LEVEL_5 1027 サブレベル5
TYPE_SUBPREMISE 1028 サブ
TYPE_SUBWAY_STATION 89 地下鉄の駅
TYPE_SYNAGOGUE 90 シナゴーグ
TYPE_SYNTHETIC_GEOCODE 1029 シンセティックジオコード
TYPE_TAXI_STAND 91 タクシー乗り場
TYPE_TRAIN_STATION 92 鉄道駅
TYPE_TRANSIT_STATION 1030 駅を移動する
TYPE_TRAVEL_AGENCY 93 旅行会社
TYPE_UNIVERSITY 94 大学
TYPE_VETERINARY_CARE 95 獣医師のケア
TYPE_ZOO 96 動物園

あくまでgoogleの割り振りであって、常に正しいわけではありません。値が割り振られておらず0が返ってくる、東京ドームが教会扱いされていたりするなどの誤りもみられます。

placeのtypeの読み取り

place.getPlaceTypes()で読み取りますが、返す値はList<Integer>となります。これは複数の数値が指定されていることがあるためです。以下のように取得します

place.getPlaceTypes().get(0)

0番目の数値が最も適切である可能性が高ため、この方法による取得で問題なく使えるでしょう。

type値によって画像を切り替える

type値を取得し、その値によって画像を切り替えます。これは例えばレストラン(79)であった場合にレストランのアイコンを表示する。という使い方です。

レストランの場合は icon_79.png という画像を用意することとします。 drawableの場合はicon_79.xml 

その上で以下のように実装します。

String fileName = "icon_"+place.getPlaceTypes().get(0);
int picId = getResources().getIdentifier(fileName, "drawable", getPackageName());
imageView.setImageResource(picId);

画像を用意していないtypeについて

typeは相当な数がありますし、すべて用意してもあまり意味はありません。よって特定のタイプのみを表示し、残りは■などで表示することとします。getIdentiferを使った場合において対象画像が存在しない場合、0が返されます(int型のため)。これを利用して以下のようにします。

String fileName = "icon_" + place.getPlaceTypes().get(0);
int picId = getResources().getIdentifier(fileName, "drawable", getPackageName());
if(picId==0){
     imageView.setImageResource(R.drawable.icon_default);
}else{
     imageView.setImageResource(picId);
}

もちろん、icon_0をデフォルトにしても構いません!そっちのほうが楽か・・。