如何在安卓中打印多个位置谷歌地图



onCreate方法:

{
        double[] lat = {24.8926596, 48.85837, 0};
        double[] lang = {67.0835093, 2.294481, 0};
        List<CustomberLatLang> list = new ArrayList<CustomberLatLang>();
        CustomberLatLang datamodel = new CustomberLatLang();
        for (int i = 0; i < lat.length; i++) {
            datamodel.setLat(lat[i]);
            datamodel.setLang(lang[i]);
            list.add(datamodel);
        }
        insertMarkers(list);
}

insertMarkers方法:

 private void insertMarkers(List<CustomberLatLang> list) {
        final LatLngBounds.Builder builder = new LatLngBounds.Builder();
        for (int i = 0; i < list.size(); i++) {
            final LatLng position = new LatLng(list.get(i).getLat(), list.get(i).getLang());
            final MarkerOptions options = new MarkerOptions().position(position);
            map.addMarker(options);
            builder.include(position);
        }
    }

数据模型:

public class CustomberLatLang {
    double lat;
    double lang;
    public double getLat() {
        return lat;
    }
    public void setLat(double lat) {
        this.lat = lat;
    }
    public double getLang() {
        return lang;
    }
    public void setLang(double lang) {
        this.lang = lang;
    }
}

我正在尝试设置所有位置谷歌地图的标记。当我尝试运行我的代码时,我得到了nullpointer exception map.addMarker(options);

您的map变量为空。尝试在使用前初始化此变量。

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    ...
    map = fm.getMap();
    ...
    insertMarkers(list);

您可以使用以下命令在Google地图上添加多个标记 --

try {
        Intent intent = getIntent();
        Bundle extras = intent.getExtras();
        Geocoder geocoder = new Geocoder(context);
        Origin_Map = extras.getString(MainActivity.ORIGIN_MAP);
        Destination_Map = extras.getString(MainActivity.DESTINATION_MAP);
        Addr_Origin = geocoder.getFromLocationName(Origin_Map, 1);
        Addr_Dest = geocoder.getFromLocationName(Destination_Map, 1);
        if (Addr_Origin.size() > 0) {
            latitude_origin = Addr_Origin.get(0).getLatitude();
            longitude_origin = Addr_Origin.get(0).getLongitude();
        }
        if (Addr_Dest.size() > 0) {
            latitude_destination = Addr_Dest.get(0).getLatitude();
            longitude_destination = Addr_Dest.get(0).getLongitude();
        }
        Marker m1 = googleMap.addMarker(new MarkerOptions().position(new LatLng(latitude_origin, longitude_origin)).title(Origin_Map).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE)));
        Marker m2 = googleMap.addMarker(new MarkerOptions().position(new LatLng(latitude_destination, longitude_destination)).title(Destination_Map).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)));
    } catch (Exception e) {
        e.printStackTrace();
    }

我正在从另一个活动中获取两个位置的名称,并在已经单独初始化的GoogleMap中标记它们。

编辑部分::

要初始化地图,请使用以下命令 --

private void initializeMap()
{
    if (googleMap == null) {
        MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }
}

希望这有帮助!

最新更新