搜索堆栈溢出和其他地方,并试图把一些编码做我需要的工作。我将有一个邮政编码(为了测试目的,它被固定在28752),我希望该页面能够给我邮政编码50英里以内的位置。我读的大部分内容都超出了我的想法,但我拼凑了下面的内容,并且尽我所能知道它应该工作得很好(给我参数中的记录列表),但事实并非如此。php lat长半径从邮政编码
首先我使用以下设置参数的...
$zipcode="28752";
$url = "http://maps.googleapis.com/maps/api/geocode/json?address=".$zipcode."&sensor=false";
$details=file_get_contents($url);
$result = json_decode($details,true);
$lat=$result['results'][0]['geometry']['location']['lat'];
$lng=$result['results'][0]['geometry']['location']['lng'];
$range = 50;
// Find Max - Min Lat/Long for Radius and zero point and query
$lat_range = $range/69.172;
$lon_range = abs($range/(cos($latitude) * 69.172));
$min_lat = number_format($lat - $lat_range, "4", ".", "");
$max_lat = number_format($lat + $lat_range, "4", ".", "");
$min_lon = number_format($lng - $lon_range, "4", ".", "");
$max_lon = number_format($lng + $lon_range, "4", ".", "");
然后我设置SQL查询如下...
$LA1_RESULTS = "-1";
if (isset($min_lat)) {
$LA1_RESULTS = $min_lat;
}
$LO1_RESULTS = "-1";
if (isset($min_long)) {
$LO1_RESULTS = $min_long;
}
$LO2_RESULTS = "-1";
if (isset($max_long)) {
$LO2_RESULTS = $max_long;
}
$LA2_RESULTS = "-1";
if (isset($max_lat)) {
$LA2_RESULTS = $max_lat;
}
mysql_select_db($database_XMASTREE, $XMASTREE);
$query_RESULTS = sprintf("SELECT * FROM zip_code WHERE zip_code.latitude BETWEEN %s AND %s AND zip_code.longitude BETWEEN %s AND %s", GetSQLValueString($LA1_RESULTS, "int"),GetSQLValueString($LA2_RESULTS, "int"),GetSQLValueString($LO1_RESULTS, "int"),GetSQLValueString($LO2_RESULTS, "int"));
$RESULTS = mysql_query($query_RESULTS, $XMASTREE) or die(mysql_error());
$row_RESULTS = mysql_fetch_assoc($RESULTS);
$totalRows_RESULTS = mysql_num_rows($RESULTS);
输出可以在看到http://signature-online.net/xmastrees/zipsearch.php正确地给出经度和纬度变量。我已经将数据库中的lat和long设置为十进制(小数点后6位)。
我是原来的“知道刚够危险”!任何人都可以弄清楚我做错了什么?
谢谢大家谁回答。在解决方案看起来像这样复杂的工作方式上,我的头脑一直很低调,它一直告诉我存在编码错误。因此,由于这是一个非常小的数据库(只有30条记录),我实际上查找了半径内的邮政编码,并将它们作为列表添加到单独的字段中。然后,我能够在有限的知识范围内创建搜索参数。我非常感谢你们给出的答案!我非技术人员的解决方法可能会让你咯咯笑! –
错误信息是什么? –
以及我使用DW CS6添加了查询,它告诉我$ query_ZIPLOCATE =“SELECT * FROM MEMBERS WHERE(POWER(纬度 - ”输入纬度“,2)+ POWER(经度 - ”输入长度“, 2))