有没有办法使用邮政编码找到径向距离?
我的任务是搜索居住在指定距离内的所有用户。我知道用户的zipcodes。
例如,距离当前位置25英里的用户。
我有其他搜索类别,我正在使用mysql查询。我无法解决距离问题。
我的后端是在php中 和Flex前端。
对我而言,最好的选择就是www.zip-codes.com/zip-code-radius-finder.asp。即,如果我能够在指定的径向距离内获得所有可用的邮政编码。所以我可以将此邮政编码与我数据库中的用户邮政编码进行比较。并选择匹配的。
请帮我解决这个问题。 Zeeshan
答案 0 :(得分:8)
我使用免费的Google Maps API完成了类似的工作 - 这可能足以满足您的需求
http://googlemapsapi.blogspot.com/2006/06/geocoding-at-last.html - 关于这个问题的简短发表(自2006年起)
http://code.google.com/apis/maps/index.html - Google Maps API主页
答案 1 :(得分:6)
邮政编码不直接映射到彼此的距离。你必须获得邮政编码和lat / long数据,在那里查找邮政编码,并比较纬度/经度坐标之间的距离。根据当地情况,可以获得免费数据,但购买此类表格或订阅可能付费的网络服务非常常见,该网络服务会将邮政编码转换为纬度/经度或相邻邮政编码。
答案 2 :(得分:2)
Google search发现了一些好的点击:
答案 3 :(得分:2)
您只需使用数据库即可完成所有这些操作
这样一切都在MySQL层运行和缓存。无需API。
答案 4 :(得分:0)
当然,你可以使用Google API实现一些代码,但here是一个小项目,我已经为你写了,它看起来如下:
这是代码:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<s:layout>
<s:VerticalLayout/>
</s:layout>
<fx:Declarations>
<s:HTTPService id="service" resultFormat="text" result="service_resultHandler(event)" fault="Alert.show(event.fault.toString())"/>
</fx:Declarations>
<s:HGroup width="100%"
horizontalAlign="center"
verticalAlign="middle"
textAlign="center">
<s:Label text="ZIP code"/>
<s:TextInput id="zip" text="90503"/>
<s:Label text="Radius in miles"/>
<s:TextInput id="miles" text="5"/>
<s:Button label="GO!" click="button1_clickHandler(event)"/>
</s:HGroup>
<mx:DataGrid id="dg" width="100%" height="100%">
<mx:columns>
<mx:DataGridColumn dataField="zip" headerText="ZIP Code"/>
<mx:DataGridColumn dataField="distance" headerText="{'Distance in Miles from '+zip.text}"/>
<mx:DataGridColumn dataField="city" headerText="City"/>
<mx:DataGridColumn dataField="state" headerText="State"/>
</mx:columns>
</mx:DataGrid>
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
[Bindable]
public var result:Array=new Array();
protected function button1_clickHandler(event:MouseEvent):void
{
service.url="http://free-zipcode-maps.com/tools/zipcoderadius/extractzips2.cgi?Zip_Code="+zip.text+"&Miles="+miles.text;
service.send();
}
protected function service_resultHandler(event:ResultEvent):void
{
//<textarea name="download" cols=65 rows=20>
//ZIP Code Distance in Miles from 90503 City State
//</textarea>
var res:String=event.result.toString();
var startString:String="ZIP Code Distance in Miles from "+zip.text+" City State";
var start:int=res.search(startString)+startString.length+1;
var end:int=res.search('</textarea>')-1;
res=res.substring(start,end);
var rows:Array=res.split("\n");
for each(var row:String in rows)
{
var r:Array=row.split("\t");
result.push({zip:r[0],distance:r[1],city:r[2],state:r[3]});
}
dg.dataProvider=new ArrayCollection(result);
}
]]>
</fx:Script>
</s:Application>