代号一张地图

Codename One Map

我想显示一张带有某些坐标的地图,我可以在一个 GUI 元素上完成,但是当我为其他 GUI 元素复制代码时,地图不会出现

这是一个 GUI 元素(页面或屏幕)的代码

@Override
protected void beforeMapaGPS(Form f) {
    MapComponent mapComponent= new MapComponent();
    double latitude=-41.169782;
    double longitude =-71.444885;

    Coord lastLocation = new Coord(latitude, longitude);
    mapComponent.zoomTo(lastLocation, 15);


    f.setLayout(new FlowLayout());
    f.addComponent(mapComponent);
    f.show();
}

这是从第一个

复制的另一个 GUI 元素(其他页面或屏幕)
@Override
protected void onCreateGUI1() {
 MapComponent mapComponent= new MapComponent();
    double latitude=-41.169782;
    double longitude =-71.444885;

    Coord lastLocation = new Coord(latitude, longitude);
    mapComponent.zoomTo(lastLocation, 15);


    f.setLayout(new FlowLayout());
    f.addComponent(mapComponent);
    f.show();
}

当我 运行 模拟器地图出现在第一页或屏幕上,而不是其他

保存设计器时收到消息

首先,不要将 FlowLayout 用于任何对等组件或复杂组件,如地图、浏览器、列表、多列表...

其次,您在第二种形式的 onCreate 方法中实现地图代码。在 beforeShow()postShow() 方法中执行。

最后,您通过在 beforeShow() 方法中调用 f.show() 来请求已经显示的表单再次显示。

将您的代码更改为:

@Override
protected void beforeMapaGPS(Form f) {
    MapComponent mapComponent= new MapComponent();
    double latitude=-41.169782;
    double longitude =-71.444885;

    Coord lastLocation = new Coord(latitude, longitude);
    mapComponent.zoomTo(lastLocation, 15);

    f.setLayout(new BorderLayout());
    f.addComponent(BorderLayout.CENTER, mapComponent);
}

第二个:

@Override
protected void beforeGUI1(Form f) {
    MapComponent mapComponent= new MapComponent();
    double latitude=-41.169782;
    double longitude =-71.444885;

    Coord lastLocation = new Coord(latitude, longitude);
    mapComponent.zoomTo(lastLocation, 15);

    f.setLayout(new BorderLayout());
    f.addComponent(BorderLayout.CENTER, mapComponent);
}