搜索堆棧溢出和其他地方,並試圖把一些編碼做我需要的工作。我將有一個郵政編碼(爲了測試目的,它被固定在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))