java - 如何使用经度和纬度获取地址

标签 java blackberry latitude-longitude

我正在使用地理编码。我想使用经度和纬度获取地址或位置。但是当我使用bedford时。它每次都显示大西洋

package mypackage;
import javax.microedition.location.AddressInfo;
import javax.microedition.location.Landmark;

import net.rim.device.api.lbs.Locator;
import net.rim.device.api.lbs.LocatorException;
import net.rim.device.api.system.Application;
import net.rim.device.api.ui.component.Dialog;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.container.MainScreen;

public class myReverseGeocode extends MainScreen
{
    private Thread reverseGeocode;

    public myReverseGeocode()
    {
        reverseGeocode = new Thread(thread);
        reverseGeocode.setPriority(Thread.MIN_PRIORITY);
        reverseGeocode.start();
    }

    Runnable thread = new Runnable()
    {
        public void run()
        {
            AddressInfo addrInfo = null;

            int latitude  = (int)(52.135973);
            int longitude = (int)(-0.466655);

            try
            {
                Landmark[] results = Locator.reverseGeocode
                 (latitude, longitude, Locator.ADDRESS );

                if ( results != null && results.length > 0 )
                    addrInfo = results[0].getAddressInfo();

                synchronized(Application.getEventLock())
                {
                       add(new LabelField("------------------------"+addrInfo));
              add(new LabelField("------------------------"+addrInfo.getField(addrInfo.BUILDING_FLOOR)));
              add(new LabelField("------------------------"+addrInfo.getField(addrInfo.CITY)));
              add(new LabelField("------------------------"+addrInfo.hashCode()));
              add(new LabelField("------------------------"+addrInfo.getField(addrInfo.BUILDING_NAME)));
              add(new LabelField("------------------------"+addrInfo.getField(addrInfo.COUNTRY)));
              add(new LabelField("------------------------"+addrInfo.getField(addrInfo.STREET)));


                }
          //      add(new LabelField("---"+addrInfo));
            }
            catch ( LocatorException lex )
            {

                  synchronized(Application.getEventLock())
                  {

                      System.out.print("EVENT THREAD\n");
                      Dialog.inform("Posted!"+lex);
                  }
            }
        }
    };
}

最佳答案

那个reverseGeocode方法接受两个整数作为参数,但根据文档,这些是“小数点后五位的十进制,乘以 100000”。

只需创建一个新的坐标实例并使用该方法的第二个版本:

    Coordinates coords = new Coordinates(52.135973, -0.466655, 0);
    Landmark[] results = Locator.reverseGeocode(coords, Locator.ADDRESS );

关于java - 如何使用经度和纬度获取地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20343693/

相关文章:

java - 带参数的 Jersey 构造函数

blackberry - 如何在黑莓中以编程方式发送短信

gis - 将纬度/经度转换为 Alberta 10 TM 投影

android-mapview - 如何计算 React-Native 中 MapView 组件的增量纬度和经度?

java - 缺少依赖 JBoss AS 7.1.1

java - Eclipse 中的 RED 编辑器在打开 .robot 套件文件时抛出异常

java - Java 的 main() 方法可以声明为 final 吗?

eclipse - 错误: Cannot run program "jar": CreateProcess error=2,系统找不到指定的文件

java - Eclipse 构建的 jar 文件无法在 BlackBerry 上运行

javascript - 尝试从有效的 LatLng 对象创建 LatLngBounds 对象时出错