Codenameone 如何获得代号为1的MapContainer边界框
My Codename One应用程序具有MapContainer功能。我需要在上面显示坐标位于服务器上的兴趣点(POI)。服务器上可能有成百上千个这样的POI。这就是为什么我只想从服务器上下载可以在地图上显示的POI。因此,我需要获取地图边界以将其传递给服务器 我读了这本书,另一本,键似乎得到了地图投影和地图边界框。但是,getProjection()方法或getBoundingBox()似乎没有公开 解决方案是将地图中心的Codenameone 如何获得代号为1的MapContainer边界框,codenameone,Codenameone,My Codename One应用程序具有MapContainer功能。我需要在上面显示坐标位于服务器上的兴趣点(POI)。服务器上可能有成百上千个这样的POI。这就是为什么我只想从服务器上下载可以在地图上显示的POI。因此,我需要获取地图边界以将其传递给服务器 我读了这本书,另一本,键似乎得到了地图投影和地图边界框。但是,getProjection()方法或getBoundingBox()似乎没有公开 解决方案是将地图中心的getCameraLocation()坐标与getZoom()坐标混合
getCameraLocation()
坐标与getZoom()
坐标混合,以推断这些边界。但它可能会因设备而异(请参见所示区域可能更大)
如何获得代号为1的地图边界
感谢您的帮助
干杯,这可能是通过分叉项目并提供拉取请求而很容易暴露出来的东西。我们目前正在更新map组件,因此现在是进行更改和添加功能的好时机。问题出在getCoordAtPosition()的javadocs中。这将得到纠正。getCoordAtPosition()需要绝对坐标,而不是相对坐标 例如
Coord NE=currentMap.getCoordAtPosition(currentMap.getWidth(),0);
Coord SW=currentMap.getCoordAtPosition(0,currentMap.getHeight());
应该是
Coord NE=currentMap.getCoordAtPosition(currentMap.getAbsoluteX()+currentMap.getWidth(),currentMap.getAbsoluteY());
Coord SW=currentMap.getCoordAtPosition(currentMap.getAbsoluteX(),currentMap.getAbsoluteY()+currentMap.getHeight());
我在你提供的坐标上试过了,它返回了有效的结果
编辑2017年3月21日:结果表明,一些平台需要相对坐标,而其他平台需要绝对坐标。我必须对其进行标准化,并且我选择在所有平台上使用相对坐标,以与Javadocs保持一致。因此,您的第一次尝试:
Coord NE=currentMap.getCoordAtPosition(currentMap.getWidth(),0);
Coord SW=currentMap.getCoordAtPosition(0,currentMap.getHeight());
现在将在库的最新版本中工作
我还添加了另一种方法:
getBoundingBox()
,它将为您获取边界框,而不必担心相对/绝对坐标。您指的是package com.codename1.maps
中的MapComponent
还是MapContainer
。前者没有声明Projection
或BoundingBox
对象,我无法找到MapContainer
源。请您进一步指导我好吗?MapContainer
是本机地图cn1lib的一部分,它是。由于它是作为cn1lib实现的,所以您还可以轻松编辑本机代码,这在Codename One中有时不够直观。这也没那么危险。谢谢@Shai。同时,为了同样的目标,我尝试了将getCoordAtPosition
应用于MapContainer,但我不理解结果。地图中心位于(Lat:48.8574;Lon:2.0654),我尝试了//获取地图边界Coord NE=currentMap.getCoordAtPosition(currentMap.getWidth(),0);Coord SW=currentMap.getCoordAtPosition(0,currentMap.getHeight())代码>在模拟器中,我得到Lat SW=48.8584 Lat NE=48.8612(不适用,因为两个Lat>地图中心Lat)Lon SW=2.0625 Lon NE=2.0679(正常)。为什么西南纬度错了?我不是地图专家,但我记得有几种“投影”类型或类似的类型,因此地图可能使用了其中一种?因此方法getCoordAtPosition
没有考虑投影。我从方法名中了解到,我将获得lon;地图上任意xy点的坐标。我的理解正确吗?太好了!谢谢史蒂夫!