嘿
我正在使用谷歌地图完成搜索部分并在按城市名称搜索时获得结果。现在我必须做扩展功能,如果我给postnumber然后必须搜索2km或10km区域。我怎么办它?? 看这里的一个例子 http://www.hm.com/no/store-locator
答案 0 :(得分:2)
试试此代码 ...
即纬度&经度来自邮政编码 ...
public void locationFromPostCode(String postCode){
geocoder1 = new Geocoder(this);
try {
List<Address> addresses1 = geocoder1.getFromLocationName(postCode, 1);
if (addresses1 != null && !addresses1.isEmpty()) {
Address address1 = addresses1.get(0);
// Use the address as needed
latitude_start = address1.getLatitude();
longitude_start = address1.getLongitude();
String message = "Latitude: "+address1.getLatitude()+", Longitude: "+address1.getLongitude();
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
} else {
// Display appropriate message when Geocoder services are not available
Toast.makeText(this, "Unable to geocode zipcode", Toast.LENGTH_LONG).show();
}
} catch (IOException e) {
// handle exception
}
}
对于该代码,您需要 ...
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
您从此代码获取纬度&amp;经度 邮政编码地点 从纬度&amp;经度您可以获得位置 ...
答案 1 :(得分:0)
function geocode_yahoo($code){
$app_id = '';
$code = str_replace(" ","+",$code);
$url ="http://local.yahooapis.com/MapsService/V1/geocode?appid=$app_id&zip=$code";
$xml=@file_get_contents($url);
preg_match('/<Latitude>(.*?)<\/Latitude>/',$xml,$matches);
$ll['lat']=$matches[1];
preg_match('/<Longitude>(.*?)<\/Longitude>/',$xml,$matches);
$ll['lng']=$matches[1];
return $ll;
}
这里是返回lat和long的函数,我想你会继续努力。 在雅虎注册api密钥。并使用此功能。已经使用了几个月。
在奇怪的情况下,地理编码错误,但它只是偶然的,也是最容易找到的方法,它们通常是100英里外(所以纬线长度完全不同)
我们还使用AFD邮政编码数据库(放入邮政编码 - 获取所有地址详细信息),这已经有很长的位置,但只有4位小数(非常准确)