2017-09-16 12 views
0

私はマーカー情報をtextViewに取得したいと思いますが、それはいつもJSONの最後のものを表示しています。Android Google Mapマーカー情報をTextViewに

私のプランは非常に簡単でした。ユーザーがMarkerをクリックするとRealitveLayoutが "VISIBLE"になりました。これまでのところ動作しますが、私のマーカはJSONから収集してから、MAPに広告します。

はトリック するもののOnClickリスナー(セットはVISIBLEレイアウトし、そのレイアウト上にあるもののTextViewする情報を送信します。)

ITの作品があり、それだけでJSON配列から最後のオブジェクトを受け取ります。

public GoogleMap.OnInfoWindowClickListener getInfoWindowClickListener() 
{ 
    return new GoogleMap.OnInfoWindowClickListener() 
    { 
     @Override 
     public void onInfoWindowClick(Marker marker) 
     { 
      RelativeLayout rl1 = (RelativeLayout) findViewById(R.id.popup); 
      rl1.setVisibility(View.VISIBLE); // Set the View to VISIBLE 


      //Title to TextView (also "Score" info) 
      TextView pealkiriTextView = (TextView) findViewById(R.id.pealkiriTextView); 
      pealkiriTextView.setText(title + " (" + punkte + " punkti)"); 

      //Description to TextView 
      TextView pKirlejdusTextView = (TextView) findViewById(R.id.pKirlejdusTextView); 
      pKirlejdusTextView.setText(kirjeldus); 

     } 
    };} 

私は

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("punktid"); 
       JSONArray jsonArray = new JSONArray(getObject); 

       for (int i = 0; i < jsonArray.length(); i++) { 
        JSONObject jsonObject = jsonArray.getJSONObject(i); 
        nr = jsonObject.getString(NR); 
        title = jsonObject.getString(TITLE); 
        kirjeldus = jsonObject.getString(KIRJELDUS); 
        vahend = jsonObject.getString(VAHEND); 
        punkte = jsonObject.getString(PUNKTE); 
        latLng = new LatLng(Double.parseDouble(jsonObject.getString(LAT)), Double.parseDouble(jsonObject.getString(LNG))); 

        // Anname addMarkerile väärtused 
        addMarker(latLng, title, kirjeldus,punkte, nr, vahend); 
       } 
      } catch (JSONException e) { 
       // JSON error 
       e.printStackTrace(); 
      } 
     } 
    }, new Response.ErrorListener() { 

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

(URLから)JSONから情報を取得し、マーカーを追加すると、マップする方法厥:

private void addMarker(LatLng latlng,final String nr, final String title, final String kirjeldus,final String punkte, final String vahend) { 
    markerOptions.position(latlng); 
    //markerOptions.title(title +"(" + punkte +"p)"); 
    markerOptions.title(punkte +" Punkti"); 
    //markerOptions.snippet(kirjeldus); 
    if (vahend.equalsIgnoreCase("auto")) { markerOptions.icon(BitmapDescriptorFactory.fromResource(R.mipmap.auto)); 
    } else { markerOptions.icon(BitmapDescriptorFactory.fromResource(R.mipmap.jala)); } 
    gMap.addMarker(markerOptions);} //addMarker 

答えて

0

をGoogleマップのマーカー情報を取得するには、ここで私は1つのカスタムを作成しました情報ウィンドウ

public class CustomWindowInfo implements GoogleMap.InfoWindowAdapter { 

// Use default InfoWindow frame 
@Override 
public View getInfoWindow(Marker arg0) { 
    return null; 
} 

// Defines the contents of the InfoWindow 
@Override 
public View getInfoContents(Marker arg0) { 

    // Getting view from the layout file info_window_layout 
    View v = getLayoutInflater().inflate(R.layout.custom_map_window, null); 
    TextView texttitle = (TextView) v.findViewById(R.id.texttitle); 
    TextView text_description = (TextView) v.findViewById(R.id.text_description); 

    texttitle.setText(arg0.getTitle()); 

    // Setting the location to the textview 
    text_description.setText(arg0.getSnippet()); 
    return v; 

}} 

グーグルマップ

googleMap.setInfoWindowAdapter(new CustomWindowInfo()); 
googleMap.setOnInfoWindowClickListener(listenerInfowindow_click); 

のカスタム情報ウィンドウを設定し、クリック時に

public GoogleMap.OnInfoWindowClickListener listenerInfowindow_click = new GoogleMap.OnInfoWindowClickListener() { 

     @Override 
     public void onInfoWindowClick(final Marker marker) { 
      AlertDialog.Builder builder = new AlertDialog.Builder(MapActivity.this); 
      builder.setTitle(""); 
      builder.setMessage(dialog_mas); 
      builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 

        if (InterNet.isConnectedToInternet()) { 
        Geocoder selected_place_geocoder = new Geocoder(MapActivity.this); 
        address = selected_place_geocoder.getFromLocationName(marker.getSnippet(), 1); 

        } else { 
         Toast.makeText(MapActivity.this,InterNet.interNetMsg, Toast.LENGTH_LONG).show(); 
        } 
        dialog.cancel(); 
       } 
      }); 
      builder.setNegativeButton("N0", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        dialog.cancel(); 

       } 
      }); 
      builder.show(); 


     } 
    }; 
をマーカーのinforamtionを取得します
関連する問題