我正在构建一个需要输入位置的小程序。但是,由于我使用的特定 API,该输入必须是纬度和经度。这样做的问题是用户不方便弄清楚他们的纬度和经度是什么,然后输入它。但是每个人都知道他们的邮政编码。是否有可以获取邮政编码并返回纬度和经度的Java API?(它可以来自邮政编码内的任何随机点,只要该点位于邮政编码区域内的某个地方,它的准确性并不重要)另一件可行的事情是,它是否可以根据 ip 获取位置用户的地址。我想到的最后一种方法是在那个邮政编码中寻找业余无线电并获得它的纬度和经度。这个。这可能吗?
问问题
2875 次
3 回答
4
不要认为有 API,但邮政编码数据库可用于创建 API。
于 2011-09-01T15:04:09.170 回答
3
这将是您在常规应用程序中执行此操作的方式,对于小程序应该是相同的。
public static void main(String[] args) {
/** let's use the following zip code simply for the purpose of this
example (its the zip code for hollywood callifornia) */
String zipCode = 91601
String latitude = "0";
String longitude = "0";
try {
/**
JavaCVS api is required in order to read this, it can
be found at http://sourceforge.net/projects/javacsv/
**/
CsvReader products = new CsvReader("zips.csv");
/** a cvs containing all the zip codes and latitudes
and longitudes can be found at:
http://sourceforge.net/projects/zips/files/zips/zips.csv.zip/
**/
products.readHeaders();
int numOfHeaders = products.getHeaderCount();
System.out.println("Number of headers" + numOfHeaders);
try {
while (products.readRecord())
{
String lookedupZip = products.get(products.getHeader(0));
if (lookedupZip.equals(zipCode)) {
latitude = products.get(products.getHeader(2));
longitude = products.get(products.getHeader(3));
}
}
} catch (IOException e1) {
e1.printStackTrace();
}
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e2) {
e2.printStackTrace();
}
}
感谢@Ring Bearer提供 csv 文件链接
于 2011-09-06T17:29:43.993 回答
1
Google (afaik)在其地理编码响应中不提供邮政编码。因为我目前正在做类似的事情,所以我必须决定一些非常相似的事情并找到解决方法:地区。地理编码响应包含国家、州和地区的名称,因此您的用户可以缩小范围。链式选择是一个很好的补充。
于 2011-09-01T15:08:38.217 回答