当前位置: 首页 > 知识库问答 >
问题:

调整地图以包含标记信息窗口

商宏爽
2023-03-14

我正在使用osmdroid和osmbonuspack库。在活动中,我有一个地图,上面有几个来自osmbonuspack的标记,每个标记在点击时打开一个InfoWindow。但当标记接近MapView的上边缘时,它的infowindow打开超出界限。有没有一种方法可以调整mapview,以便让Marker的InfoWindow像这个iOS库一样完整地呈现出来?https://www.mapbox.com/ios-sdk/examples/marker/

共有1个答案

哈襦宗
2023-03-14

我通过重写标准的MarkerInfoWindow onOpen方法解决了这个问题:

@Override
public void onOpen(Object item) {
    super.onOpen(item);
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            int[] infoWindowTop = {0, 0};
            int[] mapViewTop = {0, 0};
            mView.getLocationOnScreen(infoWindowTop);
            mMapView.getLocationOnScreen(mapViewTop);
            int rightEnd = infoWindowTop[0] + mView.getWidth();
            int dy = infoWindowTop[1] - mapViewTop[1];
            int dx = infoWindowTop[0];
            int dx_right = mMapView.getWidth() - rightEnd;
            if (dy < 0 && dx < 0) {
                smoothScrollBy(mMapView, dx, dy);
                return;
            }
            if (dy < 0 && dx_right < 0) {
                smoothScrollBy(mMapView, -dx_right, dy);
                return;
            }
            if (dx < 0) {
                smoothScrollBy(mMapView, dx, 0);
                return;
            }
            if (dy < 0) {
                smoothScrollBy(mMapView, 0, dy);
                return;
            }
            if (dx_right < 0) {
                smoothScrollBy(mMapView, -dx_right, 0);
                return;
            }
        }
    }, 500);

}
 类似资料:
  • 我正在用VueJS在Laravel 5.7中构建一个应用程序。我有一个谷歌地图(使用vue2谷歌地图构建),有200个标记,每个标记都有一个信息窗口。我想在infoWindow中包含一个路由器链接,但由于该链接是作为字符串传递的,所以Vue似乎没有对其进行解析。 这是我目前的组件-除了路由器链接,所有的工作 有人能建议一种方法来解析路由器链接吗? 谢谢你

  • 还有另外四个if语句,它们对其他类别做同样的事情。 它会显示标记,但当我单击标记时,它会显示上次创建的标记的信息窗口。

  • 我使用以下代码向google地图添加标记并创建边界 我想做的是添加标记并以一种在具有固定高度的地图中都可见的方式进行缩放 所有图标是否会出现取决于我为填充添加的值。 如果我增加值,所有图标都会显示出来。否则其他的是隐藏的。 考虑到我的googleMap有固定的设置宽度,我如何为填充提供正确的值?

  • 所以我正在用svg开发一个地图,我希望能够根据用户输入缩放到svg中的预定义区域(一个州或国家)。我找到了一个教程,该教程既能做到这一点,又能对其进行动画化,在这里:https://css-tricks.com/interactive-data-visualization-animating-viewbox/ith codepen在这里:https://codepen.io/sdras/pen/5

  • 问题内容: 我正在使用react-google-maps显示带有标记的地图,当您单击标记时,所有信息窗口都会打开。当我单击它时,我只想显示一个标记的信息窗口,而其他窗口保持关闭状态。 这是我的代码: 我用这个打开和关闭InfoWindow 我正在绘制所有标记,并在地图上显示它们。如何单击仅打开一个标记的InfoWindow? 这是一个相关的问题,但这不是React提出的,并且不使用react-go

  • 当我将图像加载到标记的icon属性中时,它将以原始大小显示,而原始大小比应该的大得多。 我想把尺寸调整到标准尺寸,调整到更小的尺寸。做这件事最好的方法是什么? 代码: