【问题标题】:is there a java api for getting the latitude and longitude from zip codes? [closed]是否有用于从邮政编码获取纬度和经度的 java api? [关闭]
【发布时间】:2011-11-08 11:48:49
【问题描述】:

我正在构建一个需要输入位置的小程序。但是,由于我使用的特定 API,该输入必须是纬度和经度。这样做的问题是用户不方便弄清楚他们的纬度和经度是什么,然后输入它。但是每个人都知道他们的邮政编码。是否有可以获取邮政编码并返回纬度和经度的Java API? (它可以来自邮政编码内的任何随机点,只要该点位于邮政编码区域内的某个地方,它的准确性并不重要)另一件可行的事情是,它是否可以根据 ip 获取位置用户的地址。我想到的最后一种方法是在那个邮政编码中寻找业余无线电并获得它的纬度和经度。这是一位从事业余无线电工作的朋友向我提出的,他向我展示了this。这可能吗?

【问题讨论】:

  • 哪个国家/地区的邮政编码? 您始终可以为此目的包装 Google 的服务,但要记住的一件事是邮政编码不是唯一的,而不是由远射。
  • 在客户端存储的数据太多了,基本上存储了所有邮政编码的经度和纬度信息。您正在寻找的是地理编码code.google.com/apis/maps/documentation/geocoding。您可以发送带有邮政编码的ajax请求并返回经度和纬度。
  • Google "Java GIS" .. 你应该会找到很多链接。
  • 如果我要使用ip地址来获取用户的位置,有没有办法/api来做到这一点?
  • 我发现了一个不同的程序做同样的事情,但问题是它可以在 java 中完成。它位于levinecentral.com/ham/grid_square.php

标签: java api ip-address latitude-longitude zipcode


【解决方案1】:

不认为有 API,但the zip code database 可以用来创建一个。

【讨论】:

  • 我在你的答案中使用了数据库来写我的答案,thanx。我不知道可以在不占用 GB 空间的情况下拥有所有这些文件的简单 csv 文件。真的是全部吗(至少在美国)?
  • @Ephraim - 邮政编码不断添加到系统中。该 sourceforge 项目多久更新一次?几年前,我们在内部项目中使用了它。然后它是最新的。如果 SF 项目被放弃,那么您可能有一个过时的文件。
【解决方案2】:

Google (afaik) doesn't offer Zip Codes 在他们的地理编码响应中。因为我目前正在做类似的事情,所以我必须决定一些非常相似的事情并找到一个解决方法:地区。地理编码响应包含国家、州和地区的名称,因此您的用户可以缩小范围。链式选择是一个不错的补充。

【讨论】:

    【解决方案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 文件链接

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-06
      • 1970-01-01
      • 2012-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多