Компоненты CN1 MapLayout не отображаются так, как будто они были закреплены - PullRequest
0 голосов
/ 07 декабря 2018

Как следует из названия.Метки, которые я добавляю к MapLayout («верх» и «низ»), на самом деле не привязаны к данной координате.Я что-то упустил, чтобы избежать этого эффекта (см. Запись экрана ниже).

enter image description here

мой пример кода:

    final MapContainer mapContainer = new MapContainer(API_KEY, false);


    Container actual = new Container();
    actual.setLayout(new MapLayout(mapContainer, actual));

    Form f = new Form("Maps", new LayeredLayout());

    f.add(mapContainer);
    f.add(actual);

    String[] coordinates = new String[] {
        "50.963642, 7.121855"  
    };

    List<MapContainer.MapObject> addedMarkers = new ArrayList<>();
    List<Coord> coords = new ArrayList<>();

    EncodedImage ei = EncodedImage.createFromImage(
            FontImage.createMaterial(FontImage.MATERIAL_GPS_FIXED, f.getUnselectedStyle())
            , false);

    for(String cStr : coordinates) {
        Coord c = toCoordinate(cStr);
        MapContainer.MapObject obj = mapContainer.addMarker(ei, c, "Marker", "Long text", (evt) -> {

            log.p("clicked on marker" + c);

            Component cmp1 = new Label("top");
            actual.addComponent(c, cmp1);
            MapLayout.setHorizontalAlignment(cmp1, 0.5f);
            MapLayout.setVerticalAlignment(cmp1, 1f);

            Component cmp2 = new Label("bottom");
            actual.addComponent(c, cmp2);
            MapLayout.setHorizontalAlignment(cmp2, 0.5f);
            MapLayout.setVerticalAlignment(cmp2, 0f);
        });

        coords.add(c);
        addedMarkers.add(obj);
    }


    f.revalidate();

    f.show();

1 Ответ

0 голосов
/ 08 декабря 2018

Попробуйте использовать этот новый API https://www.codenameone.com/blog/map-component-positioning-revisited.html

Он работает лучше, чем старый подход к макету карты, поскольку он преобразует компоненты в маркеры назад и вперед.

...