我目前正在使用Android Google地图实用程序库.我通过API调用接收给定区域的geojson,并且需要在地图上显示该区域.
我打电话来这样做
GeoJsonLayer layer = new GeoJsonLayer(getMap(), geoJsonData);
layer.addLayerToMap()
Run Code Online (Sandbox Code Playgroud)
其中getMap()返回一个GoogleMap对象,geoJsonData是一个JSONObject.此代码在与geojson关联的区域周围绘制边框.
下面的代码在区域周围绘制一个红色边框,并用黄色填充.
GeoJsonLayer layer = new GeoJsonLayer(getMap(), geoJsonData);
GeoJsonPolygonStyle polygonStyle = layer.getDefaultPolygonStyle();
polygonStyle.setStrokeColor(ContextCompat.getColor(this, R.color.red));
polygonStyle.setFillColor(ContextCompat.getColor(this, R.color.yellow));
layer.addLayerToMap();
Run Code Online (Sandbox Code Playgroud)
我在设置这个GeoJsonLayer的样式时遇到了麻烦,整个地图是黄色的,区域的边框是红色,区域的填充颜色是正常颜色.
有人能告诉我如何使用GeoJson数据在Android中实现这一目标吗?一种选择是创建我自己的多边形形状.我可以使用覆盖整个地图的坐标声明一个多边形,然后使用geojson返回的坐标添加一个洞.
但我认为必须有一些更简单的东西允许我使用内置的GeoJsonLayer类,并且不需要我自己解析geojson.
除少数设备外,我的应用程序工作得很好.在一台这样的设备上,我在我的一项活动中获得了致命的异常.错误是java.lang.ClassCastException:java.lang.String无法强制转换为android.text.Spannable ...... 在android.widget.TextView.setEnabled(TextView.java:1432)
堆栈跟踪
05-02 09:18:19.917: E/AndroidRuntime(20587): FATAL EXCEPTION: main
05-02 09:18:19.917: E/AndroidRuntime(20587): java.lang.ClassCastException: java.lang.String cannot be cast to android.text.Spannable
05-02 09:18:19.917: E/AndroidRuntime(20587): at android.widget.TextView.setEnabled(TextView.java:1432)
05-02 09:18:19.917: E/AndroidRuntime(20587): at com.myapp.android.menu.LoginFragment.checkIfAnyFieldIsEmpty(LoginFragment.java:512)
05-02 09:18:19.917: E/AndroidRuntime(20587): at com.myapp.android.menu.LoginFragment.onCreateView(LoginFragment.java:183)
05-02 09:18:19.917: E/AndroidRuntime(20587): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460)
05-02 09:18:19.917: E/AndroidRuntime(20587): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911)
05-02 09:18:19.917: E/AndroidRuntime(20587): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
05-02 09:18:19.917: E/AndroidRuntime(20587): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
05-02 09:18:19.917: E/AndroidRuntime(20587): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444)
05-02 09:18:19.917: E/AndroidRuntime(20587): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:429)
05-02 09:18:19.917: E/AndroidRuntime(20587): at android.os.Handler.handleCallback(Handler.java:615)
05-02 09:18:19.917: E/AndroidRuntime(20587): at android.os.Handler.dispatchMessage(Handler.java:92)
05-02 09:18:19.917: E/AndroidRuntime(20587): at …Run Code Online (Sandbox Code Playgroud)