当前位置: 首页 > 知识库问答 >
问题:

GoogleMap尝试在外面的地图上绘制时给我null

滕夜洛
2023-03-14

如何正确保护GoogleMap不为空?

它目前在DrawonMap()方法中表示mMap null,但在将其添加到onmapready()方法中时可以工作。

public class DetailActivity extends AppCompatActivity implements OnMapReadyCallback {

private GoogleMap mMap;
private String locationA;
private String locationB;
private ArrayList<LatLng> latLngList;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_detail);

    // Check if Google Maps have been activated, else starting it again.
    if (mMap == null) {
        SupportMapFragment smf = (SupportMapFragment) this.getSupportFragmentManager().findFragmentById(R.id.map);
        smf.getMapAsync(this);
    }

    // Settings up the views
    TextView mDistance = (TextView) findViewById(R.id.distanceDetail);
    TextView mDuration = (TextView) findViewById(R.id.durationDetail);
    TextView mLocationA = (TextView) findViewById(R.id.locationA);
    TextView mLocationB = (TextView) findViewById(R.id.locationB);


    // Getting the values
    Intent i = getIntent();
    locationA = i.getStringExtra("locA");
    locationB = i.getStringExtra("locB");
    String distance = i.getStringExtra("distance");
    String duration = i.getStringExtra("duration");


    // initiate the values.
    mDistance.setText(distance);
    mDuration.setText(duration);
    mLocationA.setText(locationA);
    mLocationB.setText(locationB);


    drawOnMap();
}





public void drawOnMap(){

    latLngList = getIntent().getParcelableArrayListExtra("points");

    // Används för att rita ut marksen på kartan sedan, start och stop.
    // Get the first and last postion to write out the marks on map
    LatLng startLatLng = latLngList.get(0);
    LatLng endLatLng = latLngList.get(latLngList.size() - 1);

    // Zooms into the start position;
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(startLatLng, 10));

    // Adding mark to start location
    mMap.addMarker(new MarkerOptions()
            .position(startLatLng)
            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN))
            .title(locationA));

    // Adding mark to end location
    mMap.addMarker(new MarkerOptions()
            .position(endLatLng)
            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED))
            .title(locationB));


    if (latLngList.size() > 0) {
        // Draw the route on map
        mMap.addPolyline(new PolylineOptions()
                .addAll(latLngList)
                .color(Color.argb(255, 55, 160, 255))
                .width(20));
    }
}



@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;
    UiSettings mapSettings = mMap.getUiSettings();
    mapSettings.setZoomControlsEnabled(true);
}

共有1个答案

富辰阳
2023-03-14

在map就绪后调用drawOnMap方法。

@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;
    UiSettings mapSettings = mMap.getUiSettings();
    mapSettings.setZoomControlsEnabled(true);

    drawOnMap();
}
 类似资料:
  • 我正在开发一个应用程序,它有一个应用程序功能,可以在谷歌地图上显示团队作为标记。 我可以把自己显示为移动时更新的标记 问题是,标记仅在我第一次转到MapFragment时显示。当我导航到另一个片段并返回到地图时,我看到一个没有标记的空地图 尝试#3,请查看以前实现的历史记录,这些实现略有不同: 我的片段布局: 我的IncidentMapFragment代码,现在根据用户反馈进行更新。更新很少。请参

  • 我有一个图像,其中每个像素是4字节,即红色掩码是0xFF0000绿色是0xFF00和蓝色0xFF。我读取图像,并将其传递给函数作为函数(字节imgBuff,int w,int h) 但是当我跑的时候 线程“thread-23”java中出现异常。lang.IllegalArgumentException:光栅太阳。awt。形象SunWritableRaster@1d82ed7与ColorModel

  • 给定一个信号的时间表示图,如何画出相应的时间指标线? 具体来说,给定一个时间索引范围为0到2.6(s)的信号图,我想画垂直红线,指示列表的相应时间索引,我该怎么做?

  • 本文向大家介绍python在openstreetmap地图上绘制路线图的实现,包括了python在openstreetmap地图上绘制路线图的实现的使用技巧和注意事项,需要的朋友参考一下 利用python进行经纬度轨迹展示 嘿!各位好久不见,距离第一次发博客已经过去两年多了,本人也从本科生变成了研究生,好了书归正传,最近在做一个关于航班滑行路径轨迹的项目,目的是将航班的经纬度数据在地图上显现出来并

  • 嗨,我正在学习如何在shiny上使用传单地图,我用了这个例子: 我想通过将函数替换为来将圈替换为标记。 实际的函数是:(server.r的第98行) 我把它换成了:

  • 问题内容: 假设我有一张带有行星圆柱图的图像,比如说: http://www.johnstonsarchive.net/spaceart/cymaps.html 我想把它画在一个三维球体上,以恢复物体的原始形状 行星。 有没有一种方法可以使用像matplotlib,mayavi, 底图还是类似的? 问题答案: 更新:这是使用Cartopy的新版本,如[basemap is] [下线](https: