Android 显示arrayList中的所有点<;字符串>;谷歌地图
我试图从arraylist中获取所有点,并在地图上显示它们中的每一个。我似乎想不出这是怎么做的。这些点应该在点击按钮时显示Android 显示arrayList中的所有点<;字符串>;谷歌地图,android,google-maps,Android,Google Maps,我试图从arraylist中获取所有点,并在地图上显示它们中的每一个。我似乎想不出这是怎么做的。这些点应该在点击按钮时显示 public class TrackUserGps extends AppCompatActivity implements OnMapReadyCallback { Button btnSearch; String strJrEmpID, strJrEmpName, strGetData; ClsWebConnection oClsWeb = n
public class TrackUserGps extends AppCompatActivity implements OnMapReadyCallback {
Button btnSearch;
String strJrEmpID, strJrEmpName, strGetData;
ClsWebConnection oClsWeb = new ClsWebConnection();
ArrayList<String> arrPosition1 = new ArrayList<>();
ArrayList<String> arrPosition2 = new ArrayList<>();
Location location;
double latitude, longitude;
Polyline line;
LatLng latLng;
String strLat, strLng;
List<Marker> markers = new ArrayList<Marker>();
private EditText dateSet, timeset;
private Calendar cal;
private int day;
private int month;
private int year;
private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDay) {
dateSet.setText(selectedDay + " / " + (selectedMonth + 1) + " / " + selectedYear);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_track_user_gps);
Toolbar JrEmpNameToolbar = (Toolbar) findViewById(R.id.JrEmpNameToolbar);
setSupportActionBar(JrEmpNameToolbar);
strJrEmpID = getIntent().getStringExtra("JRempID");
strJrEmpName = getIntent().getStringExtra("JRempName");
TextView JrEmpNameText = (TextView) findViewById(R.id.JrEmpNameText);
JrEmpNameText.setText(strJrEmpName);
dateSet = (EditText) findViewById(R.id.dateSet);
timeset = (EditText) findViewById(R.id.timeset);
btnSearch = (Button) findViewById(R.id.btnSearch);
cal = Calendar.getInstance();
day = cal.get(Calendar.DAY_OF_MONTH);
month = cal.get(Calendar.MONTH);
year = cal.get(Calendar.YEAR);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
SimpleDateFormat newDateFormat = new SimpleDateFormat("dd/MM/yyyy");
dateSet.setText(newDateFormat.format(cal.getTime()));
Calendar c = Calendar.getInstance();
int mHour = c.get(Calendar.HOUR_OF_DAY);
int mMinute = c.get(Calendar.MINUTE);
timeset.setText(mHour + ":" + mMinute);
dateSet.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showDialog(0);
}
});
final GoogleMap gmap = null;
timeset.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Calendar mcurrentTime = Calendar.getInstance();
int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY);
int minute = mcurrentTime.get(Calendar.MINUTE);
int second = mcurrentTime.get(Calendar.SECOND);
TimePickerDialog mTimePicker;
mTimePicker = new TimePickerDialog(TrackUserGps.this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) {
timeset.setText(selectedHour + ":" + selectedMinute);
}
}, hour, minute, true);//Yes 24 hour time
mTimePicker.setTitle("Select Time");
mTimePicker.show();
}
});
btnSearch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (ClsWebConnection.FunIsNetAvailable()) {
strGetData = oClsWeb.FunGetUserListPosition(strJrEmpID, dateSet.getText().toString(), timeset.getText().toString());
Log.d("strGetDataGoogle", strGetData);
if (!strGetData.equalsIgnoreCase("NA")) {
if (strGetData.contains("#")) {
String[] strHash = strGetData.split("#");
for (String aStrHash : strHash) {
String[] strComma = aStrHash.split(",");
arrPosition1.add(strComma[0]);
arrPosition2.add(strComma[1]);
}
} else {
String[] strComma = strGetData.split(",");
arrPosition1.add(strComma[0]);
arrPosition2.add(strComma[1]);
}
onMapReady(gmap);
} else {
Toast.makeText(getApplicationContext(), "No data available", Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(getApplicationContext(), "No Internet available", Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
@Deprecated
protected Dialog onCreateDialog(int id) {
return new DatePickerDialog(this, datePickerListener, year, month, day);
}
@Override
public void onMapReady(GoogleMap googleMap) {
GoogleMap mMap = googleMap;
for (int iCnt = 0; iCnt < arrPosition1.size(); iCnt++) {
Double latitude = Double.valueOf(arrPosition1.get(iCnt));
Double longitude = Double.valueOf(arrPosition2.get(iCnt));
Log.d("latitudeC", String.valueOf(latitude));
Log.d("longitudeC", String.valueOf(longitude));
LatLng leadLatLng = new LatLng(latitude, longitude);
mMap.addMarker(new MarkerOptions().position(leadLatLng));
Marker marker = mMap.addMarker(new MarkerOptions().position(new LatLng(Double.parseDouble(strLat), Double.parseDouble(strLng))).title("Position"));
markers.add(marker);
}
markers.size();
}
}
你的gmap是空的
首先是变化
GoogleMap mMap = googleMap;
到
第二
onMapReady(gmap);
永远不要把这个直接称为改变
if(gmap!=null)
//call the loop for displaying marker
else
//show a toast to wait till map is ready
同时从map ready内部移除循环此处发生的情况循环是否完成,但没有显示任何内容或其中一些内容也显示了您是否可以发布接收到的数据样本,并且logIt的片段正在循环中,但应用程序在添加标记时崩溃。请尝试检查strLat和strLng的值。看起来它没有根据您提供的代码进行初始化。还要检查映射是否为空。我没有使用strLat和strLng。让我检查map是否为null
onMapReady(gmap);
if(gmap!=null)
//call the loop for displaying marker
else
//show a toast to wait till map is ready