根据php中的地址获取错误的位置纬度和经度

Posted

技术标签:

【中文标题】根据php中的地址获取错误的位置纬度和经度【英文标题】:Getting wrong location latitude and longitude based on address in php 【发布时间】:2014-08-08 08:03:57 【问题描述】:

使用谷歌地图根据街道、城市、州、邮编查找位置纬度和经度。我正在从谷歌地图中获取地址并试图找到纬度和经度。但是我的代码总是给出错误的位置。

代码:-

<?php

$con = mysql_connect("localhost","location","password");
if (!$con) 
  die('Could not connect: ' . mysql_error());


$street =$_REQUEST[street];
$city   =$_REQUEST[city];
$state  =$_REQUEST[state];
$zip    =$_REQUEST[zip];
$result=null;

mysql_select_db("map", $con);

$address = $street . ', &nbsp;' . $city . ', &nbsp;' . $state. ', &nbsp;' . $zip; // Google HQ
$prepAddr = str_replace(' ','+',$address);

$geocode=file_get_contents('http://maps.google.com/maps/api/geocode/json?address='.$prepAddr.'&sensor=false');

$output= json_decode($geocode);

$lat  = $output->results[0]->geometry->location->lat;
$long = $output->results[0]->geometry->location->lng;

if($lat==0.0000 && $long==0.0000)
$result="ERROR";
else

$sql="INSERT INTO markers (name, address, lat, lng) VALUES ('".$street."', '".$city.", " .$state ."', '".$lat."', '".$long."')";
$result="SUCCESS";


if (!mysql_query($sql,$con)) 
  echo $result;
 else 
  echo $result;

【问题讨论】:

您能否发布一个示例,说明您输入并放入数据库的内容以及 Google 对通话的响应? @Jonathon 例如:- street-> Synergy Web Tech Pvt. Ltd. 701, Goyal Trade Centre Shantivan Complex Colony, city-> Borivali East Mumbai, state-> Maharashtra zip-> 400066..这个地址取自google map。 【参考方案1】:

请尝试替换这些行

$address = $street . ', &nbsp;' . $city . ', &nbsp;' . $state. ', &nbsp;' . $zip; // Google HQ
$prepAddr = str_replace(' ','+',$address);

替换

$address = $street . '+' . $city . '+' . $state. '+' . $zip; 
$prepAddr = urlencode($address);

【讨论】:

如果你对字符串进行urlencode,你不应该在两者之间加上加号,只需使用空格

以上是关于根据php中的地址获取错误的位置纬度和经度的主要内容,如果未能解决你的问题,请参考以下文章

如何从C#中的地址获取纬度和经度

php根据经纬度获取地理位置

从php中的地址获取纬度经度

根据纬度和经度获取网格中单元格的位置

如果我们在 Android 中使用位置 API 给出纬度和经度,如何获取地址

PHP 通过PHP中的IP地址获取经度和纬度