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);
答案 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);
}
}
希望这有帮助!