【问题标题】:No map marker info on click event点击事件没有地图标记信息
【发布时间】:2017-11-10 10:34:05
【问题描述】:

我正在开发一款在 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();
            }
        });
    }

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

【问题讨论】:

    标签: android google-maps


    【解决方案1】:

    尝试替换

    setOnInfoWindowClickListener(...)
    

    setOnMarkerClickListener(...)
    

    【讨论】:

      【解决方案2】:

      您可以使用带有onClickListener 的标记。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-06
        • 1970-01-01
        • 1970-01-01
        • 2015-07-06
        • 2014-09-26
        • 1970-01-01
        相关资源
        最近更新 更多