0

住所を指定してGoogleマップから緯度と経度を取得しようとしています。しかし、それはエラーを出しています。URLをブラウザのURLバーに直接コピーすると。それは正しい結果を与えています。答えを知っている人がいれば。

これが私のコードです。

<?php 
$key = '[AIzaSyAoPgQlfKsBKQcBGB01cl8KmiPee3SmpU0]';

$opt = array (
'address'   => urlencode('Kolkata,India, ON') ,
'output'    => 'xml' 
);

$url = 'http://maps.google.com/maps/geo?q='.$opt['address'].'&output='.$opt['output'].'&oe=utf8&key='.$key;

$dom = new DOMDocument();
$dom->load($url);

$xpath = new DomXPath($dom);
$xpath->registerNamespace('ge', 'http://earth.google.com/kml/2.0');

$statusCode = $xpath->query('//ge:Status/ge:code');

if ($statusCode->item(0)->nodeValue == '200') {

$pointStr = $xpath->query('//ge:coordinates');
$point = explode(",", $pointStr->item(0)->nodeValue);

$lat = $point[1];
$lon = $point[0];

echo '<pre>';
echo 'Lat: '.$lat.', Lon: '.$lon;
echo '</pre>';
}

?>

次のエラーが発生しました:

Warning: DOMDocument::load(http://maps.google.com/maps/geo?      q=Kolkata%252CIndia%252C%2BON&output=xml&oe=utf8&key=%5BAIzaSyAoPgQlfKsBKQcBGB01cl8KmiPee3SmpU0%5D) [domdocument.load]: failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request in C:\xampp\htdocs\draw\draw.php on line 19

Warning: DOMDocument::load() [domdocument.load]: I/O warning : failed to load external entity "http://maps.google.com/maps/geo?q=Kolkata%252CIndia%252C%2BON&output=xml&oe=utf8&key=%5BAIzaSyAoPgQlfKsBKQcBGB01cl8KmiPee3SmpU0%5D" in C:\xampp\htdocs\draw\draw.php on line 19

Notice: Trying to get property of non-object in C:\xampp\htdocs\draw\draw.php on line 26
4

1 に答える 1

2

DOMDocument::load()真である必要allow_url_fopenがあります。

-設定を確認し、php.iniに切り替えます1

参照:

http://php.net/filesystem.configuration.php#ini.allow-url-fopen

アクセス可能なURLからのXMLのロードにDOMDocument.loadが失敗する原因は何ですか?

于 2012-10-10T10:29:16.163 に答える