为Kivy Garden MapView设置地图边界

时间:2017-08-23 15:42:46

标签: python maps kivy

我在我的Kivy应用程序中使用Garden-MapView。

我的问题是,用户可以移出地图的边界(从OpenStreetMap拉出)并继续平移到周围的蓝色海洋中。区域。图片如下:

我不确定问题是否特定于Garden-MapView,或者是否通用的kivy / widget答案可以解决它。

我解决这个问题的最佳尝试(众多)是下面发布的一些粗略代码。当地图范围移过屏幕边缘时,代码会计算中心屏幕坐标并将地图的中心拉到该坐标。它对经度更有效。但由于on_map_relocated事件调用的频率,这可能会显着降低应用程序的速度。我还设置了MapView.min_zoom = 2:

class CustMapView(MapView):
    def on_map_relocated(self, *kwargs):
        x1, y1, x2, y2 = self.get_bbox()
        centerX, centerY = Window.center
        latRemainder = self.get_latlon_at(centerX, centerY, zoom=self.zoom)[0]-(x1+x2)/2
        if x1 < -85.8: self.center_on((x1+x2)/2+latRemainder+.01, self.lon)
        if x2 > 83.6: self.center_on((x1+x2)/2+latRemainder-.01, self.lon)
        if y1 == -180: self.center_on(self.lat, (y1+y2)/2+0.01)
        if y2 == 180: self.center_on(self.lat, (y1+y2)/2-0.01)

重现自己的完整代码:https://pastebin.com/xX0GtPUb

0 个答案:

没有答案