我正在构建一个需要输入位置的applet。但是,由于我正在使用的特定API,该输入必须是纬度和经度。这个问题是,用户弄清楚他们的纬度和经度是多么不方便,然后输入它。但是每个人都知道他们的邮政编码。是否有一个Java API,可以采取邮政编码,并返回纬度和经度? (它可以来自邮政编码内的任何随机点,只要该点在邮政编码区域内的某处,准确性并不重要)另一件可行的方法,就是它可以获得基于ip的位置用户的地址。我想到的最后一种方法是在邮政编码中查找火腿无线电并获得它的纬度和经度。这是由一位朋友提出的,他做了很多火腿收音机的东西,他给我看了this。这可能吗?
答案 0 :(得分:4)
不要认为有API,但可以使用the zip code database来创建API。
答案 1 :(得分:3)
这将是您在常规应用程序中执行此操作的方式,对于applet应该是相同的。
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文件链接
答案 2 :(得分:1)
Google(afaik)doesn't offer Zip Codes他们的地理编码回复。由于我目前正在做类似的事情,我不得不做出一些非常相似的事情,并找到了解决方法:地区。地理编码响应包含国家,州和州的名称。分区,因此您的用户可以缩小范围。链式选择是一个很好的补充。