我正在尝试使用朴素的地图。
我已经将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。
答案 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));
}
}