在Eclipse中使用Codename One进行本地映射

3
我是使用Eclipse的Codename Google Maps插件。我已将GoogleMaps.cn1lib添加到我的库中,并进行了菜单 -> CodeNameOne -> 刷新库操作。
代码如下:
    Form hi = new Form("Hi World");
    hi.addComponent(new Label("Hi World"));
    MapContainer googleMap = new MapContainer();
    hi.add(googleMap);
    hi.show();

我已编辑属性文件,并按照说明添加了属性(在需要替换API密钥的位置进行替换)。
我已生成Google API密钥,但在运行模拟器时遇到以下异常。应用程序无法打开OpenStreetMap。
在我的lib / impl / native / android中,我可以看到Android的InternalNativeMapsImp.java源代码。
java.lang.ClassNotFoundException: com.codename1.googlemaps.InternalNativeMapsImpl
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.ClassLoader.findSystemClass(ClassLoader.java:1001)
at com.codename1.impl.javase.ClassPathLoader.findClass(ClassPathLoader.java:100)
at com.codename1.impl.javase.ClassPathLoader.loadClass(ClassPathLoader.java:50)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.codename1.system.NativeLookup.create(NativeLookup.java:61)
at com.codename1.googlemaps.MapContainer.<init>(MapContainer.java:116)
at com.codename1.googlemaps.MapContainer.<init>(MapContainer.java:81)

我已经更换了IDE,从Eclipse/Net Beans - 同样的东西,但是在iOS上编译失败,原因相同,在堆栈跟踪之前我有以下信息:
执行: javac -classpath /var/folders/p7/xxx/classes -d /var/folders/p7/xxx/seVer /var/folders/p7/xxx/stub/com/codename1/googlemaps/InternalNativeMapsImplCodenameOne.java /var/folders/p7/xxx/stub/com/codename1/googlemaps/InternalNativeMapsStub.java /var/folders/p7/xxx/stub/GooglrMapsStub.java 注意: 一些输入文件使用或覆盖了已弃用的API。注意: 重新编译时使用-Xlint:deprecation以获取详细信息。
我如何添加MapContainer的源代码以进行调试?

那不是真正的错误。你可能有一个编译提示写错了。错误在日志中更深处。 - Shai Almog
我只是复制/粘贴了指示的构建提示。在底部有一个链接错误:** BUILD FAILED ** 以下构建命令失败: Ld build/GooglrMaps.build/Release-iphoneos/GooglrMaps.build/Objects-normal/arm64/GooglrMaps normal arm64 Ld build/GooglrMaps.build/Release-iphoneos/GooglrMaps.build/Objects-normal/armv7/GooglrMaps normal armv7 (2个失败) - Goran
那也不是错误所在。它在这两者之间。我可以几乎保证问题出在缺失或错误复制的构建提示上。请验证它们在构建提示GUI中是否正确。 - Shai Almog
明白了。我直接将文章中的属性复制粘贴到属性文件中,而不是添加它们。现在构建已经通过了,但没有地图,只有谷歌标志。有什么提示吗? - Goran
1
你需要在Google Cloud控制台中修复密钥并启用与Google相关的选项。 - Shai Almog
当API密钥未正确生成时,地图上只会显示谷歌标志。非常感谢。 - Goran
1个回答

1
Google / Native Maps 目前只能在真实设备上使用,不能在模拟器上使用。
默认情况下显示 openstreetmap 是正确的行为,但不应该抛出异常。你是如何创建地图的?简单而正确的方法是:
MapContainer googleMap = new MapContainer();
f.add(BorderLayout.CENTER, googleMap);

非常感谢@Diamond - 我的代码看起来是一样的。我的 IOS 构建失败了,因此我无法在 IOS 上进行检查,在 Android 上,代码无法打开开放街地图。以下是构建错误快照:/var/folders/p7//stub/com/codename1/googlemaps/InternalNativeMapsImplCodenameOne.java /var//T//stub/com/codename1/googlemaps/InternalNativeMapsStub.java 注意:某些输入文件使用或覆盖了已弃用的 API。 注意:重新编译时请使用-Xlint:deprecation以获取详细信息。 java.lang.ClassNotFoundException: com.codename1.googlemaps.InternalNativeMapsImpl at java.net.URLClassLoader.findClass(URLClassLoader.java:381) - Goran
你已经从属性 > 更新项目库更新了库吗? - beck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接