【问题标题】:Using Maps api & getting Coordinates from Mysql can't get multiple markers.why?使用 Maps api & 从 Mysql 获取坐标无法获取多个标记。为什么?
【发布时间】:2017-08-11 14:57:44
【问题描述】:

我正在使用谷歌地图 api。在我的情况下,我通过 php 从 mysql 接收纬度、经度和用户名。我一次接收所有用户。我尝试以下代码,它只给出一个标记。请指导我。不要让它重复,因为我尝试了很多解决方案但对我不起作用。如果你没有答案,请退出。请 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)));

                }

            }
        });
    }
}

【问题讨论】:

  • 我知道看到不赞成或重复的伤害,但请避免使用 quit 之类的词。

标签: android google-maps markers


【解决方案1】:

兄弟,您的代码非常适合添加标记。我认为您在从 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)));

            }

【讨论】:

  • 谢谢你我明白了..你是对的,我的 php 代码有问题
猜你喜欢
  • 1970-01-01
  • 2020-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-04
  • 1970-01-01
  • 2014-07-25
  • 2012-10-31
相关资源
最近更新 更多