0

私は手短にしようと思います。さらに情報が必要な場合は、お伝えします。このコードを使用して、Google マップから情報を取得しています。

<?php

  function getData($url) {
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_HEADER, 0); //Change this to a 1 to return headers
  curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  $data = curl_exec($ch);
  curl_close($ch);
  return $data;
}
$url = 'http://maps.google.com/maps/geo?output=xml&q=' . urlencode($startPlace);
$url = 'http://maps.google.com/maps/api/geocode/json?sensor=false&gl=IT&address=' .   urlencode($startPlace);
$xml = simplexml_load_string($this->getData($this->url)) or die("Error loading xml data");
$points = $xml->Response->Placemark->Point->coordinates;
$provincia = $xml->Response->Placemark->AddressDetails->Country->AdministrativeArea->SubAdministrativeArea->SubAdministrativeAreaName;
$regione =$xml->Response->Placemark->AddressDetails->Country->AdministrativeArea->AdministrativeAreaName;
echo $regione."<br>";
preg_match_all("/-*[0-9.]*(?=,)/", $points[0], $matches);
$longitude = $matches[0][0];
$latitude = $matches[0][2];

このコードは、イタリアの場所に関する情報を取得するために使用され、3 日前まではすべて正常に機能していましたが、今朝、コードによって $regione が返されるのを確認しました ($xml->Response->Placemark->AddressDetails->Country-> AdministrativeArea->AdministrativeAreaName;) には英語名がありました。見つかった場所がロンバルディアの小さな町 (「ロンバルディア」は行政区域の名前) であるとしましょう。Google マップによって返された行政区域の名前は、「ロンバルディア」ではなく「ロンバルディア」になりました。

このデータはローカル データベースで行政区域の他の場所を検索するために使用され、データベースで使用されている名前は明らかにイタリアの名前であるため、アプリケーションはもう機能しません。

どんなアドバイスにも感謝します

4

1 に答える 1

0

この問題は、言語パラメーターを指定して、別の URL を使用して解決されます。

'http://maps.google.com/maps/api/geocode/xml?sensor=false&language=IT&address=' . urlencode($startPlace);

この URL タイプは正しい結果を返しますが、形式が異なるため、コードを変更して情報にアクセスし、それらを変数に入れる必要がありますが、これで問題は解決しました

于 2012-10-28T18:06:17.000 に答える