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

时间:2016-02-29 11:22:10

标签: android google-maps

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);

2 个答案:

答案 0 :(得分:3)

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

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    ...

    map = fm.getMap();

    ...
    insertMarkers(list);

答案 1 :(得分:0)

您可以使用此功能在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中标记它们,该地图已经单独初始化。

EDITED SECTION ::

要初始化Map,请使用以下 -

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

希望这有帮助!