【发布时间】:2018-10-16 10:24:04
【问题描述】:
我试图从简短的开放位置代码中获取完整的开放位置代码,我做错了什么?我在我的 android 项目中使用 Java Open Location Code -library。
// 63.7740574, 23.9011008
// This is an full olc (I searched it from web)
// input = "9GM5QWF2+JC";
// This is an short olc (also searched from the web)
// input = "QWF2+JC";
// And this is an olc which is copied to clipboard from google maps application
input = "QWF2+JC Hautala";
boolean isFullCode = OpenLocationCode.isFullCode(input);
boolean isShortCode = OpenLocationCode.isShortCode(input);
if (isFullCode || isShortCode)
{
OpenLocationCode olc = new OpenLocationCode(input);
Double lat = olc.decode().getCenterLatitude(); // Crashes here if we are parsing input to short code
Double lng = olc.decode().getCenterLatitude(); // But doesn't crash if we are using full lenght code
result = new LatLng(lat, lng);
}
【问题讨论】:
-
您应该查看崩溃日志以了解更多详细信息。 Unfortunately MyApp has stopped. How can I solve this?中有说明。调试总是一个好主意。您也可以输入 OpenLocationCode 源代码,看看哪里出了问题。至少有了崩溃日志,人们可以更好地帮助你。否则我们需要研究 OpenLocationCode 源代码,这要求很高。 :)
-
对。由于某种原因,我无法编辑我的帖子。但这里是异常消息:
E/AndroidRuntime: FATAL EXCEPTION: main java.lang.IllegalStateException: Method decode() could only be called on valid full codes, code was QWF2+JC. -
你可以在这里看到问题的根源:https://github.com/google/open-location-code/blob/master/java/src/main/java/com/google/openlocationcode/OpenLocationCode.java#L274。看起来短代码只是在
decode()中被拒绝,并且不适用于您要完成的任务。所以,这“按规定工作”。 -
是的,这就是我最初询问如何获得全尺寸开放位置代码的原因,因为谷歌地图移动应用程序没有为其用户提供它(只有短 olc)。如果我的原始帖子不太清楚,请原谅我。
标签: java android coordinates open-location-code