2015-10-16 19 views
9

GoogleのPlace APIを使用して、ユーザー(ウェブページ)が入力した都市名を自動完成します。 APIはパラメータとして言語(pt-BR)を渡してロードされ、ポルトガル語でテキストボックスが正しく入力されていますが、getPlace()メソッドが実行されると結果(countryおよびadministrative_area_level_1)が英語で返されます。Google Place API(ポルトガル語)

問題がGoogle APIか、ポルトガル語への翻訳か私が逃したものかどうかはわかりません。私は言語のパラメータとしてスペイン語(es)、英語(en)、イタリア語(it)を渡し、期待どおりに動作するように読み込もうとしました。

<script src="https://maps.googleapis.com/maps/api/js?key=[myapikey]&signed_in=true&libraries=places&callback=initAutocomplete&language=pt-BR" async defer></script> 

...とどのように私はGoogleのサンプルコードに基づいて結果を取得しています:私は、逆ジオコーディングAPIを使用してい

// Get the place details from the autocomplete object. 
var place = autocomplete.getPlace(); 

ここ

は、私がロードしています方法ですplace_idを渡して問題は同じです(C#コード)。

var apikey = "[myserverapikey]"; 
    var requestUri = string.Format("https://maps.googleapis.com/maps/api/geocode/json?place_id={0}&key={1}", place_id, apikey); 

    var idiomas = new string[] {"pt-BR", "es", "en-us", "it"}; 

    string responseContent = string.Empty; 
    foreach (var idioma in idiomas) 
    { 
     HttpWebRequest request = WebRequest.Create(requestUri) as HttpWebRequest; 
     request.Headers.Add(HttpRequestHeader.AcceptLanguage, idioma); 
     HttpWebResponse response = request.GetResponse() as HttpWebResponse; 
     StreamReader reader = new StreamReader(response.GetResponseStream()); 

     var jsontext = reader.ReadToEnd().Trim(); 

     responseContent += jsontext; 

     var json = JsonConvert.DeserializeObject<GoogleGeoCodeResponse>(jsontext); 


    } 

    return Json(responseContent, JsonRequestBehavior.AllowGet); 

私はドキュメントをチェックしましたし、PT-BRがサポートされています。Google API Supported Languages

+0

重複しているhttp://stackoverflow.com/questions/27567757/inconsistent-language-in-google-place-details-api – aergistal

+0

リンクされた回答では、翻訳が利用できないときにこれが発生すると言われていますが、テキストボックスはpt-BRで正しく入力されています。それは奇妙ですが、Googleのデータ構造によっては可能です。 –

答えて

0

ブラジルポルトガル語の言語コードではなく、「PT-BR」の「語pt_BRは」そうへのリンクを変更します:

<script src="https://maps.googleapis.com/maps/api/js?key=[myapikey]&signed_in=true&libraries=places&callback=initAutocomplete&language=pt_BR" async defer></script> > 
はPT-BRまたは語pt_BRの作業のいずれか...私が間違っていた、判明します。ハック解決策は、それが指定した言語に変換されるので、自動補完入力を読むことです https://code.google.com/p/gmaps-api-issues/issues/detail?id=7891

:getPlaceは、言語に応じて結果を返しません

、これはGoogleマップの既存のバグです。あなたはその入力テキストボックスに照会することができますオートコンプリートの検索ボックスを使用している場合は、テキストのみの一方の入力タイプを持っている..あなたは以下が指定した言語での完全なアドレスを取得するために行うことができるように:

$("input:text").val() 

をこれは完全なアドレスを与えます。その後、文字列を解析して都市、州、国情報を取得する必要があります。

+0

答えていただきありがとうございますが、ドキュメントにはpt-BRと書かれています。とにかく私はあなたの提案を試みたが、それも動作しませんでした。サポートされている言語:https://developers.google.com/maps/faq#languagesupport –

+1

hmm ..残念ながら..これはGoogleマップのバグです:https://code.google.com/p/gmaps-api-issues/issues/detail?id = 7891 – Rohit

+1

ねえ、ハッキーな解決策をチェックして、それはあなたのために働くことができる – Rohit