2017-11-09 9 views
0

私は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(); 
      } 
     }); 
    } 

私は、マーカー情報を取得するために何を変更する必要がありますか?

答えて

0

setOnMarkerClickListener(...) 

setOnInfoWindowClickListener(...) 

を交換してください

0

onClickListenerのマーカーを使用できます。

関連する問題