点击事件没有地图标记信息

时间:2017-11-09 22:13:05

标签: android google-maps

我正在开发一款在Google地图上显示地图标记的Android应用。

我想在用户点击时显示每个标记的一些信息。 现在,显示标记,但当用户点击标记时没有任何反应。

这是我的代码:

   @Override
    public void onLocationChanged(Location location)
    {
        mLastLocation = location;
        if (mCurrLocationMarker != null) {
            mCurrLocationMarker.remove();
        }

        //Place current location marker
        LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
        MarkerOptions markerOptions = new MarkerOptions();
        markerOptions.position(latLng);
        markerOptions.title("Current Position");
        markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_MAGENTA));
        mCurrLocationMarker = mGoogleMap.addMarker(markerOptions);


        mGoogleMap.clear();
        getMarkers();
        //move map camera
        mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng,14));

    }
    private void getMarkers() {
        StringRequest strReq = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {

            @Override
            public void onResponse(String response) {
                Log.e("Response: ", response.toString());

                try {
                    JSONObject jObj = new JSONObject(response);
                    String getObject = jObj.getString("wisata");
                    JSONArray jsonArray = new JSONArray(getObject);

                    for (int i = 0; i < jsonArray.length(); i++) {
                        JSONObject jsonObject = jsonArray.getJSONObject(i);
                        title = jsonObject.getString(TITLE);
                        latLng = new LatLng(Double.parseDouble(jsonObject.getString(LAT)), Double.parseDouble(jsonObject.getString(LNG)));
                        tipo = jsonObject.getString(TIPO);
                        Log.d("Response","Tipo ="+tipo);

                        // Menambah data marker untuk di tampilkan ke google map
                        addMarker(latLng, title,tipo);
                    }

                } catch (JSONException e) {
                    // JSON error
                    e.printStackTrace();
                }

            }
        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e("Error: ", error.getMessage());
                Toast.makeText(getActivity(), error.getMessage(), Toast.LENGTH_LONG).show();
            }
        });

        AppController.getInstance().addToRequestQueue(strReq, tag_json_obj);
    }
    private void addMarker(LatLng latlng, final String title, final String tipo_reporte) {

        markerOptions.position(latlng);

        if (tipo_reporte.equals("1")) {
            Drawable dr = getResources().getDrawable(R.drawable.reten1);
            Bitmap bitmap = ((BitmapDrawable) dr).getBitmap();

            Drawable d = new BitmapDrawable(getResources(), Bitmap.createScaledBitmap(bitmap, 100, 100, true));
            Bitmap icono = ((BitmapDrawable) d).getBitmap();
            markerOptions.icon(BitmapDescriptorFactory.fromBitmap(icono));
            markerOptions.snippet(title);
        }


        mGoogleMap.addMarker(markerOptions);

        mGoogleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
            @Override
            public void onInfoWindowClick(Marker marker) {
                Toast.makeText(getContext(), marker.getTitle(), Toast.LENGTH_SHORT).show();
            }
        });
    }

我应该更改什么来获取标记信息?

2 个答案:

答案 0 :(得分:0)

您可以将标记与onClickListener一起使用。

答案 1 :(得分:0)

尝试替换

setOnInfoWindowClickListener(...)

setOnMarkerClickListener(...)