来源事件奇怪的纬度&经度

时间:2016-03-31 09:34:02

标签: google-maps codenameone

我的名字是Cyrille,我在代号为one的地图应用程序上工作。目标是制作一个应用程序,可以搜索用户的公司(带有搜索栏),并将他们想要的公司添加到列表中。然后列表出现在主窗口中并单击它们在地图上显示。

我对代号为1的事件部分有疑问。这是我的代码的一部分:

PointLayer point = new PointLayer(new Coord(lat.doubleValue(), lng.doubleValue()),
                            companyName, null);
                    pl.addPoint(point);
                    pl.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent evt) {
                            PointLayer p = (PointLayer) evt.getSource();
                            System.out.println("pressed " + p);
                            Dialog.show("Details", "" + p.getName() + "\nLatitude: " + p.getLatitude() + "\nLongitude: " + p.getLongitude(), "Ok", null);
                        }
                    });

是的,我拿了基本地图模板^^' 我的问题是:当我要求得到点的协调时,我得到了:

  

{'经度':2.3485853,'纬度':48.8769309}

但是当我要求evt.getSource的coordonates我得到:

  

{'经度':261443.31964417442,'纬度':6254004.882818963}

这是一种令人不安的......

我从昨天开始浏览互联网,但我没有找到任何东西,也许我没有在正确的地方搜索。关于发生了什么的任何线索?

编辑: 感谢回复者,我发现了这个问题。 coordonates在其他系统使用中由代号one:Popular Visualization CRS Mercator提供。为了使用它,你必须使用:com.codename1.maps.Mercator.inverseMercator(纬度,经度)转换它; 或者您可以使用谷歌标记而不是代号[我做的]

2 个答案:

答案 0 :(得分:2)

我认为您在活动中获得的坐标位于热门可视化CRS墨卡托(EPSG:900913或EPSG:3785)坐标系中,这是地图控件使用的坐标系。在lat / lon中添加的点在添加到地图时会自动转换为此系统。 “纬度”和“经度”略有误导; “x”和“y”是投影坐标的标准术语。

答案 1 :(得分:1)


我无法找到它返回此值的原因,但也许您可以通过构建coord对象来绕过此问题。 示例:

Coord coord = new Coord(lat.doubleValue(), lng.doubleValue());
PointLayer point = new PointLayer(coord, companyName, null);
                    pl.addPoint(point);
                    pl.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent evt) {
                            PointLayer p = (PointLayer) evt.getSource();
                            System.out.println("pressed " + p);
                            Dialog.show("Details", "" + p.getName() + "\nLatitude: " + coord.getLatitude() + "\nLongitude: " + coord.getLongitude(), "Ok", null);
                        }
                    });

<强> EDITED 我在一个月前遇到了同样的问题。我通过使用MapContainer解决了它,并使用了addMarker();来自地图。通过这种方式,我可以这样使用它:

MapContainer map = new MapContainer(); // This used gMaps
for(Coord points : coords){
    map.addMarker((EncodedImage) myIcon, coord,"","", new ActionListener(){
       Dialog.show("Details", "" + p.getName() + "\nLatitude: " + points.getLatitude() + "\nLongitude: " + points.getLongitude(), "Ok", null);
    })
}