Google maps 源事件奇怪纬度&;经度

Google maps 源事件奇怪纬度&;经度,google-maps,codenameone,Google Maps,Codenameone,我的名字是西里尔,我正在开发代号为1的地图应用程序。其目标是开发一款应用程序,可以在用户周围搜索公司(使用搜索栏),并将他们想要的公司添加到列表中。然后列表出现在主窗口中,单击它们在地图上显示 我对代号1上的事件部分有问题。以下是我代码的一部分: PointLayer point = new PointLayer(new Coord(lat.doubleValue(), lng.doubleValue()), companyName, nu

我的名字是西里尔,我正在开发代号为1的地图应用程序。其目标是开发一款应用程序,可以在用户周围搜索公司(使用搜索栏),并将他们想要的公司添加到列表中。然后列表出现在主窗口中,单击它们在地图上显示

我对代号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的合作者时,我得到:

{“经度”:261443.31964417442,“纬度”:6254004.882818963}

这有点令人不安

从昨天开始我就在网上查了一下,但是没有找到任何东西,也许我没有在正确的地方搜索。有什么线索吗

编辑: 多亏了回复者,我找到了问题所在。在另一个代号为“一号”的系统中给出了坐标:流行的可视化CRS Mercator。为了使用它,您必须将其转换为:com.codename1.maps.Mercator.InversionEmercator(纬度、经度); 或者你可以使用google marker而不是代号one的[我就是这么做的]


我不知道为什么它会返回这个值,但也许你可以通过构建一个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);
                        }
                    });
已编辑 一个月前我也有同样的问题。我使用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);
    })
}

我不知道为什么它会返回这个值,但也许你可以通过构建一个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);
                        }
                    });
已编辑 一个月前我也有同样的问题。我使用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);
    })
}

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

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

谢谢回答!实际上它只适用于一个点,就像我的例子。不幸的是,我对地图上有点列表的地图也有同样的问题。应用程序应该知道点击了什么点,这样它就可以进行协调。由于我们无法在pointLayer上添加actionListener,但只能在pointLayer上添加,因此coords对象无法绕过此问题。我将尝试一下,并让您知道!谢谢你的回答!实际上它只适用于一个点,就像我的例子。不幸的是,我对地图上有点列表的地图也有同样的问题。应用程序应该知道点击了什么点,这样它就可以进行协调。由于我们无法在pointLayer上添加actionListener,但只能在pointLayer上添加,因此coords对象无法绕过此问题。我将尝试一下,并让您知道!谢谢,我不知道。那么,是否有可能强制应用程序获得非投影坐标,或者我们必须转换它们?(我看到一些文章中有很多不同的公式,这取决于投影的版本)你可能需要自己将它们转换回去。尝试
com.codename1.maps.Mercator.inverseemercator(纬度、经度)。由于
Mercator
Projection
的唯一实现,我想这是正在使用的一个。谢谢,我不知道。那么,是否有可能强制应用程序获得非投影坐标,或者我们必须转换它们?(我看到一些文章中有很多不同的公式,这取决于投影的版本)你可能需要自己将它们转换回去。尝试
com.codename1.maps.Mercator.inverseemercator(纬度、经度)。由于
Mercator
Projection
的唯一实现,我想这就是正在使用的实现。