java - Android : java. lang.NullPointerException: CameraUpdateFactory 未初始化

标签 java android google-maps google-maps-android-api-2 google-play-services

我尝试实现自动右缩放级别以显示所有标记。但是,我得到空指针异常。这是我的代码:

public class LocationMarkers extends FragmentActivity {
    private static GoogleMap supportMap;
    private ArrayList<LatLng> gp = new ArrayList<LatLng>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.location_marker);
        locationMarkers();

    }

    public void locationMarkers()
    {
        /*Implement Location Markers*/
        BufferedReader jsonReader = new BufferedReader(new InputStreamReader(this.getResources().openRawResource(R.raw.map)));
        StringBuilder jsonBuilder = new StringBuilder();
        try {
            for (String line = null; (line = jsonReader.readLine()) != null;) {
                jsonBuilder.append(line).append("\n");
            }

            JSONTokener tokener = new JSONTokener(jsonBuilder.toString());
            JSONArray jsonArray = new JSONArray(tokener);


            for (int index = 0; index < jsonArray.length(); index++) 
            {

                JSONObject jsonObject = jsonArray.getJSONObject(index);
                double getLat = jsonObject.getJSONObject("point").getDouble("lat");
                double getLng = jsonObject.getJSONObject("point").getDouble("long");
                String name   = jsonObject.getString("name");
                LatLng myLoc = new LatLng(getLat, getLng);
                gp.add(myLoc);
                Log.d("Long", Double.toString(getLng));             
                FragmentManager fmanager = getSupportFragmentManager();
                Fragment fragment = fmanager.findFragmentById(R.id.map);
                SupportMapFragment supportmapfragment = (SupportMapFragment)fragment;
                supportMap = supportmapfragment.getMap();
                    if(supportMap!=null){
                        Marker LocMarker = supportMap.addMarker(new MarkerOptions().position(myLoc)
                                  .title(name));

                        }

            }
              LatLngBounds.Builder builder = new LatLngBounds.Builder();
                for(LatLng m : gp) {
                    Log.e("Tag",Double.toString(m.latitude));
                    builder = builder.include(m);
                    }
                LatLngBounds bounds = builder.build();
                int padding = 0;
                CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, 0);
                supportMap.moveCamera(cu);
        } catch (FileNotFoundException e) {
            Log.e("jsonFile", "file not found");
        } catch (IOException e) {
            Log.e("jsonFile", "ioerror");
        } catch (JSONException e) {
            Log.e("jsonFile", "error while parsing json");
        }

    }
}

我还收到另一个警告:Google Play 服务已过时。需要 2012100 但找到 1015 如果你们能帮助找到问题,我会很高兴?

最佳答案

1) 希望您是在设备上而不是在模拟器中进行测试。你可能会在模拟器中出错,如果你仍然想在模拟器上测试然后评论它。它将在设备中完美运行

2) 您获取的 Google Play 服务已过时,因为您的 Google Play 服务库版本与您的 Google Play 服务模拟器不同。您必须安装更新的 gms 和自动售货机 apk 文件。

通用汽车公司: http://uploaded.net/file/bnzl1si4

贩卖: http://www.androidfilehost.com/?fid=9390135922294521859

希望对你有帮助。

关于java - Android : java. lang.NullPointerException: CameraUpdateFactory 未初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17182353/

相关文章:

javascript - 更改谷歌地图Javascript上的标记

javascript - 谷歌地图不会在 Cordova 加载

java - java中的字符串格式化程序对于$%2$.2f意味着什么

java - 在 Java8 中连接对象数组列表

android - Android XML预览- “The following classes could not be found”

android - 不允许覆盖 'writeToParcel'。使用 'Parceler' 伴生对象代替

javascript - 谷歌地图点击事件无法完全正确工作

java - Java 内存模型是仅在 Java 范围内还是实际上在 JVM 范围内?

java - 我可以使用 Mapstruct 创建 Java 对象/实体的 DeepCopy 吗?

android - 我可以在 Google Play 控制台的哪个位置查看我的应用的 Android 版本分布?