質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

2回答

3560閲覧

[swift]google Places apiでのリクエストエラー

tommy19970714

総合スコア71

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2016/07/02 17:59

編集2016/07/03 13:43

swiftでgoogle places apiにアクセスしようとしています.
googleのPlaces APIのレファレンスにある「周辺検索リクエスト」の項目を参考にしてコードを書きました.
Google Places API Reference
しかし,以下の取得したjsonのようにINVALID_REQUESTになっていまいます.
このエラーは以下のような条件で発生するようです.

INVALID_REQUEST: 通常は、必須のクエリ パラメータ(location や radius)が指定されていないことを示します。

なぜINVALID_REQUESTになってしまうか分かりません.お願いします.

*REST APIで取得しているので,googleのAPI Managerの認証情報はブラウザキーにしています.リファラーは指定していません.APIはGoogle Maps SDK for iOSとGoogle Places API for iOSとGoogle Places API Web Service を有効にしています.

swift

1import MapKit 2import Alamofire 3class PlaceApiModel: NSObject { 4 5 var location:CLLocationCoordinate2D? 6 var requestURL = "https://maps.googleapis.com/maps/api/place/nearbysearch/json" 7 let accessKey = "*************" 8 9 func getPlaceData() 10 { 11 let locationStr:String = String(location?.longitude)+","+String(location?.latitude) 12 print(locationStr) 13 Alamofire.request(.GET, requestURL, parameters: ["key" : accessKey,"location": locationStr,"radius":500, "types": "food", "name":"cruise"]) 14 .responseJSON {json in 15 if json.result.isSuccess { 16 print(json.request) 17 18 let json2: JSON = JSON(json.result.value!) 19 20 print(json2) 21 } 22 } 23 } 24}

json

1{ 2 "status" : "INVALID_REQUEST", 3 "results" : [ 4 5 ], 6 "html_attributions" : [ 7 8 ] 9}

print(json.request)にて,出力される値は以下になります.

swift

1Optional(<NSMutableURLRequest: 0x13ab7e490> { URL: https://maps.googleapis.com/maps/api/place/nearbysearch/json?key=***&location=139.7228396473%2C35.6469954082&name=cruise&radius=500&types=food })

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pebble8888

2016/07/03 12:02

print(json.request)で出力された内容をkeyの値を除いて書いてください。
tommy19970714

2016/07/03 13:46

pebble8888さん,ご連絡いただき大変嬉しいです.ありがとうございます.print(json.request)の出力結果を載せさせていただきました.よろしくお願いします.
pebble8888

2016/07/03 15:50

環境はiOSアプリでしょうか?
guest

回答2

0

ベストアンサー

REST APIで取得しているので,googleのAPI Managerの認証情報はブラウザキーにしています.

Google Places API Web Service は、サーバー用のAPIなので、必要なAPIキーは「サーバーキー」です。

また、

に以下のように記載があるように、 iOS アプリケーションで使う場合は、 pebble8888 さんの言われている通り、 CocoaPods から入れる Google Places API for iOS が推奨されています。

Google Places API Web Service は、サーバー アプリケーション用です。クライアント側アプリケーションを作成する場合は、Google Places API for Android と Google Maps JavaScript API のプレイス ライブラリ をご覧ください。

Google Places API for iOS で Place 検索をするのに必要なことは、

ステップ 4:Google Developers Console で必要な API を有効にする
ステップ 5:API キーを取得する

にあるように、

  • Google Places API for iOS を Google Maps SDK for iOS を両方とも有効化する
  • APIキーは 「iOS key」

です。

投稿2016/07/06 04:50

amay077

総合スコア1075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

私の環境だと次のようになりました。
Google Places APIはiOS,AndroidのAPIキーは使えないようです。

iOSのSDKを使うしかないのではないでしょうか?
CocoaPodsで入れるやつです。

Optional(<NSMutableURLRequest: 0x13f696120> { URL: https://maps.googleapis.com/maps/api/place/nearbysearch/json?key=XXX&location=120.0%2C40.0&name=cruise&radius=500&types=food }) SUCCESS: { "error_message" = "This IP, site or mobile application is not authorized to use this API key. Request received from IP address XXX, with empty referer"; "html_attributions" = ( ); results = ( ); status = "REQUEST_DENIED"; }

INVALID_REQUESTと出る理由はわかりません。。

投稿2016/07/03 15:20

編集2016/07/03 16:02
pebble8888

総合スコア390

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問