使用地图 api 并从 Mysql 获取坐标无法获取多个 markers.why?
Using Maps api & getting Coordinates from Mysql can't get multiple markers.why?
我正在使用 google 地图 api.In 我的情况是我正在接收来自 mysql 到 php.I 的纬度、经度和用户名,我正在接收所有用户的一个 time.I 尝试按照它只给出一个 marker.Plz 指导我的代码。并且不要重复,因为我尝试了很多解决方案但没有为 me.If 工作,请你没有答案 quit.Please
Rec.class
public class Rec extends AppCompatActivity{
private GoogleMap mMap;
JSONObject jsonObject = new JSONObject();
JSONArray result = new JSONArray();
ArrayList<HashMap<String,String>> list = new ArrayList<>();
private String latitude,longitude,user_name;
Button btn;
private ProgressDialog loading;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rec_gps);
btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
recGps();
}
});
}
private void recGps() {
loading = ProgressDialog.show(this, "Please wait ......", "fetching....", false, false);
String url = Config.URL_CARD_INFO;
StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
loading.dismiss();
showJSON(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(RecGPS.this, error.getMessage().toString(), Toast.LENGTH_LONG).show();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
private void showJSON(final String response) {
try {
jsonObject = new JSONObject(response);
result = jsonObject.getJSONArray(Config.TAG_JSON_ARRAY);
for (int i=0;i<result.length();i++) {
JSONObject collegeData = result.getJSONObject(i);
user_name=collegeData.getString(Config.TAG_NAME);
latitude = collegeData.getString(Config.TAG_ISSUE_DATE);
longitude = collegeData.getString(Config.TAG_Expiry_DATE);
HashMap<String,String> users = new HashMap<>();
users.put(Config.TAG_NAME,user_name);
users.put(Config.TAG_ISSUE_DATE,latitude);
users.put(Config.TAG_Expiry_DATE,longitude);
list.add(users);
}
} catch (JSONException e) {
e.printStackTrace();
}
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.getMaxZoomLevel();
for(int i=0;i<result.length();i++) {
mMap.addMarker(new MarkerOptions().position(new LatLng(Double.parseDouble(list.get(i).get(Config.TAG_ISSUE_DATE)), Double.parseDouble(list.get(i).get(Config.TAG_Expiry_DATE)))).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)).title(list.get(i).get(Config.TAG_NAME)));
}
}
});
}
}
兄弟,您的代码非常适合添加 markers.I 认为您在从 MySql(如 php 或任何其他来源获取数据时遇到问题。请检查。
并使用以下内容更新您的代码以关注标记。
for (int i = 0; i < result.length(); i++) {
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(Double.parseDouble(list.get(i).get(Config.TAG_ISSUE_DATE)), Double.parseDouble(list.get(i).get(Config.TAG_Expiry_DATE))),list.size()));
mMap.addMarker(new MarkerOptions().position(new LatLng(Double.parseDouble(list.get(i).get(Config.TAG_ISSUE_DATE)), Double.parseDouble(list.get(i).get(Config.TAG_Expiry_DATE)))).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)).title(list.get(i).get(Config.TAG_NAME)));
}
我正在使用 google 地图 api.In 我的情况是我正在接收来自 mysql 到 php.I 的纬度、经度和用户名,我正在接收所有用户的一个 time.I 尝试按照它只给出一个 marker.Plz 指导我的代码。并且不要重复,因为我尝试了很多解决方案但没有为 me.If 工作,请你没有答案 quit.Please Rec.class
public class Rec extends AppCompatActivity{
private GoogleMap mMap;
JSONObject jsonObject = new JSONObject();
JSONArray result = new JSONArray();
ArrayList<HashMap<String,String>> list = new ArrayList<>();
private String latitude,longitude,user_name;
Button btn;
private ProgressDialog loading;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rec_gps);
btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
recGps();
}
});
}
private void recGps() {
loading = ProgressDialog.show(this, "Please wait ......", "fetching....", false, false);
String url = Config.URL_CARD_INFO;
StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
loading.dismiss();
showJSON(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(RecGPS.this, error.getMessage().toString(), Toast.LENGTH_LONG).show();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
private void showJSON(final String response) {
try {
jsonObject = new JSONObject(response);
result = jsonObject.getJSONArray(Config.TAG_JSON_ARRAY);
for (int i=0;i<result.length();i++) {
JSONObject collegeData = result.getJSONObject(i);
user_name=collegeData.getString(Config.TAG_NAME);
latitude = collegeData.getString(Config.TAG_ISSUE_DATE);
longitude = collegeData.getString(Config.TAG_Expiry_DATE);
HashMap<String,String> users = new HashMap<>();
users.put(Config.TAG_NAME,user_name);
users.put(Config.TAG_ISSUE_DATE,latitude);
users.put(Config.TAG_Expiry_DATE,longitude);
list.add(users);
}
} catch (JSONException e) {
e.printStackTrace();
}
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.getMaxZoomLevel();
for(int i=0;i<result.length();i++) {
mMap.addMarker(new MarkerOptions().position(new LatLng(Double.parseDouble(list.get(i).get(Config.TAG_ISSUE_DATE)), Double.parseDouble(list.get(i).get(Config.TAG_Expiry_DATE)))).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)).title(list.get(i).get(Config.TAG_NAME)));
}
}
});
}
}
兄弟,您的代码非常适合添加 markers.I 认为您在从 MySql(如 php 或任何其他来源获取数据时遇到问题。请检查。 并使用以下内容更新您的代码以关注标记。
for (int i = 0; i < result.length(); i++) {
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(Double.parseDouble(list.get(i).get(Config.TAG_ISSUE_DATE)), Double.parseDouble(list.get(i).get(Config.TAG_Expiry_DATE))),list.size()));
mMap.addMarker(new MarkerOptions().position(new LatLng(Double.parseDouble(list.get(i).get(Config.TAG_ISSUE_DATE)), Double.parseDouble(list.get(i).get(Config.TAG_Expiry_DATE)))).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)).title(list.get(i).get(Config.TAG_NAME)));
}