2017-09-16 13 views
0

Je voudrais obtenir mes informations Marker à textView, je suis capable de le faire, mais il montre toujours le dernier de JSON, de bonnes idées pour résoudre ce problème?Android Google Map Info marqueur à TextView

Mon plan était assez facile, lorsque l'utilisateur clique sur Marker alors il rendra RealitveLayout "VISIBLE", cela fonctionne jusqu'à maintenant, mais mon problème est que je rassemble mes marqueurs de JSON, puis les annonce au MAP,

il est auditeur Surclic ce qui fait le tour (jeux layout VISIBLE et envoie les informations à textview ce qui est sur cette page.)

fonctionne, mais il ne prend le dernier objet du tableau 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); 

     } 
    };} 

est comment j'obtenir des informations de JSON (depuis l'URL)

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

et ajouter des marqueurs à la carte:

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 

Répondre

0

Pour obtenir la carte Google Informations marqueur ici j'ai créé une coutume fenêtre d'informations

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; 

}} 

Définition d'une fenêtre d'information personnalisée pour la carte google

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

et pour obtenir le inforamtion du marqueur sur un clic

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(); 


     } 
    };