MapContainer仅在单击/触摸时显示

时间:2018-12-28 10:20:57

标签: codenameone

我正在尝试使用朴素的地图。

我已经将MapContainer放置在一个Form Component内,但是From却在模拟器上显示为空白,内部没有地图。当我单击视口时,只要鼠标按钮保持按下状态,地图就会显示。当我释放它时,它又消失了。

这是一个真正的问题,还是模拟器功能异常?如果是真正的问题,我在做什么错了?

下面是我正在使用的课程:

package com.mainsys.zappeion;

import com.codename1.googlemaps.MapContainer;
import com.codename1.maps.Coord;
import com.codename1.ui.Form;
import com.codename1.ui.layouts.BorderLayout;

/**
 *
 * @author Christoforos
 */
public class ZappeionMap extends com.codename1.ui.Form {
     private Form current;

      public ZappeionMap() {
        super("Ζάππειον", new BorderLayout());

    }

     @Override
    public void show() {
        if(current != null){
            current.show();
            return;
        }
        final MapContainer cnt = new MapContainer();
        this.addComponent(BorderLayout.CENTER, cnt);
        cnt.setCameraPosition(new Coord(41.889, -87.622));
        super.show();
    }

}

/ **********实施Shai的答案****************** /

我将代码更改为Shai建议显示的课程:

package com.mainsys.zappeion;

import com.codename1.googlemaps.MapContainer;
import com.codename1.location.Location;
import com.codename1.location.LocationManager;
import com.codename1.maps.Coord;
import com.codename1.ui.BrowserComponent;
import com.codename1.ui.FontImage;
import com.codename1.ui.Form;
import com.codename1.ui.layouts.BorderLayout;
import com.codename1.ui.plaf.Style;

/**
 *
 * @author Christoforos
 */
public class ZappeionMap extends com.codename1.ui.Form {
     private Form current;
private static final String HTML_API_KEY = "AIzaSyDHlFJK561bQVs0AyBm1M5xWS_YCHNuPfc";
      public ZappeionMap() {
        super("Ζάππειον", new BorderLayout());
        final MapContainer cnt = new MapContainer( HTML_API_KEY );
        this.addComponent(BorderLayout.CENTER, cnt);
        cnt.setCameraPosition(new Coord(41.889, -87.622));
    }      
}

它仍然有相同的问题。屏幕为空白。该地图仅在我点击屏幕时显示。

我还注意到了其他事情。在调试器上,我收到消息:

WARNING: Apple will no longer accept http URL connections from applications you tried to connect to http://tile.openstreetmap.org/4/2/9.png to learn more check out https://www.codenameone.com/blog/ios-http-urls.html

为什么要尝试连接到http://tile.openstreetmao.org。应该可以在google地图上使用,而不能在openstreet地图上使用。

更多信息,也许是值得的。我在真实设备上测试。屏幕仍然闪烁,但是当我触摸屏幕时,它什么也没显示。与模拟器相反,单击屏幕时会出现地图。

我正在centos 7上使用netbeans 8.2

感谢您的帮助。

谢谢Christoforos。

1 个答案:

答案 0 :(得分:0)

为什么要覆盖form的show方法,而不在构造函数中构造UI?

似乎您从生命周期类中复制了一些代码,并将其与表单子类混合在一起,例如当前变量。

这更接近正确:

public class ZappeionMap extends com.codename1.ui.Form {
     private Form current;

     public ZappeionMap() {
        super("Ζάππειον", new BorderLayout());
        final MapContainer cnt = new MapContainer();
        this.addComponent(BorderLayout.CENTER, cnt);
        cnt.setCameraPosition(new Coord(41.889, -87.622));
     }

}