这是在标记上方设置MapOverlay自定义视图的地图高级计划问题

时间:2018-11-22 04:52:38

标签: android here-api

我想在标记顶部上添加一个自定义布局信息窗口。 Android这里的地图基本包具有以下功能 Map.InfoBubbleAdapter(),hideInfoBubble,getInfoBubbleContents和isInfoBubbleVisible ,这些功能现在缺少 >高级 包装

Here Map Premium plan Map.InfoBubbleAdapter() ,hideInfoBubble ,getInfoBubbleContents and isInfoBubbleVisible missing?

中被建议

这是问题列表。

  1. 我已经实现了 MapOverlay ,它似乎提供了自定义布局 但它未对齐标记
  2. 信息窗口在我尝试放大(即使我没有 )时变得可见在布局的可见性上进行强力调整调整

  3. infoWindow 位置在设置为mapOverlay的 geoCordinate 不是。 / p>

我有 20个不同的标记,我想在用户点击任意标记并关闭上一个标记时显示自定义信息窗口。 我尝试了下面的代码,但无法正常工作,并且似乎没有有关实现的文档

        @Override
        public boolean onMapObjectsSelected(List<ViewObject> objects) {

            for (ViewObject object : objects) {
                if (object.getBaseType() == ViewObject.Type.USER_OBJECT && ((MapObject) object).getType() == MapObject.Type.MARKER) {
                    MapMarker mapMarker = (MapMarker) object;
                    if(!isMapMarkerViewVisible()){
                        setInfoWindow(mapMarker);
                    }else{
                        removeInfoWindow();
                    }

                    return true;
                }

            }

            return false;
        }

    @Override
    public boolean onTapEvent(PointF pointF) {
        for (MapObject mapObject : mapObjects) {
            if (mapObject.getType() == MapObject.Type.MARKER) {
                removeInfoWindow();
            }
        }
        return super.onTapEvent(pointF);
    }


private void setInfoWindow(MapMarker mMark) {
    infoWindowText.setText(mMark.getTitle());
    infoWindowText.setTag(mMark.getTitle());
    mapOverlay = new MapOverlay(infoWindowView, mMark.getCoordinate());
    hereMap.addMapOverlay(mapOverlay);
}

private boolean isMapMarkerViewVisible(){
    return infoWindowView.getVisibility() == View.VISIBLE;
}
private void removeInfoWindow() {
    if(infoWindowView!=null) {
        if (infoWindowView.getVisibility() == View.VISIBLE) {
            infoWindowView.setVisibility(View.INVISIBLE);
        }
    }
}

以上代码的行为异常。

当我尝试放大和缩小时,信息窗口会奇怪地显示。即使我没有设置可见性。 上面的链接包含正在运行的代码,但现在不支持。

1 个答案:

答案 0 :(得分:0)

与MapMarkers不同,MapLabeledMarkers避免与其他用户定义的带标签的图标以及地图上的内置图标和文本重叠。通过指定IconCategory或使用图像,可以使用内置POI图标。可以为图标指定多语言文本。根据Map的当前语言和辅助语言,可以显示不同的文本语言。

MapLabeledMarker(GeoCoordinate loc)

在具有默认POI图标的特定GeoCoordinate处创建MapLabeledMarker。

MapLabeledMarker(GeoCoordinate loc, Image icon)

在具有指定图像的特定GeoCoordinate处创建一个MapLabeledMarker。

有关详细参考,请参考并升级到最新版本的SDK:https://developer.here.com/documentation/android-premium/api_reference_java/com/here/android/mpa/mapping/MapLabeledMarker.html