Aggiungi un'image per la window delle informazioni sugli indicatori Android

Sto facendo un'applicazione Android. In questa applicazione, ci sono marcatori di alcuni alberghi e quando l'utente fa clic sulla window di informazioni del marcatore appare e dovrebbe essere come l'image seguente. (Questa è un'applicazione web)

Finestra di informazioni sul marcatore

  • Il jar di questo file di class appartiene a 'Android Dependencies' del contenitore che non consente le modifiche di origine agli allegati di origine nei suoi inserimenti
  • Potremmo ancora rimuovere le applicazioni non pubblicate da Google Play?
  • ListView onScroll aggiungere altri elementi
  • ldd equivalente su android
  • Dare un doppio valore a Geopoint in sovrapposizioni di GoogleMap
  • Calcolare la velocità di Internet in android
  • Ho una vista di elenco nel mio frammento del cassetto di navigazione e il frammento di mappa ha i marcatori.

    Questo è il mio codice prima di cercare di caricare l'image per la window delle informazioni in MainActivity.java .

      // Load Hotels private class GetHotelTask extends AsyncTask<String, String, String> { @Override protected String doInBackground(String... data) { String identifier = data[0]; // Toast.makeText(getContext(), "Manuli "+identifier, Toast.LENGTH_LONG ).show(); // Create a new HttpClient and Post Header HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("http://api.ayubo.lk/android/retrievehotels"); HttpResponse response = null; String responseStr = null; try { //add data List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); nameValuePairs.add(new BasicNameValuePair("long", data[0])); nameValuePairs.add(new BasicNameValuePair("lat", data[1])); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); //execute http post response = httpclient.execute(httppost); responseStr = EntityUtils.toString(response.getEntity()); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return responseStr; } protected void onPostExecute(String result) { try { JSONArray jObj = new JSONArray(result); for(int a=0;a<jObj.length();a++){ JSONArray obj= (JSONArray) jObj.get(a); Log.i("json", obj.get(3).toString()); Marker marker = GoogleMapsFragment.map.addMarker(new MarkerOptions() .position(new LatLng( Double.valueOf(obj.get(3).toString()), Double.valueOf(obj.get(2).toString()))) .title(obj.get(1).toString()+" | simple Price : "+obj.get(4).toString()) .snippet(obj.get(5).toString()) .icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_marker_hotel))); hotelMarkers.add(marker); } LatLng latLng = new LatLng(Double.valueOf(latitude),Double.valueOf(longtitude)); GoogleMapsFragment.map.moveCamera(CameraUpdateFactory.newLatLng(latLng)); GoogleMapsFragment.map.animateCamera(CameraUpdateFactory.zoomTo(15)); } catch (JSONException e) { Log.e("JSON Parser", "Error parsing data " + e.toString()); } } } 

    Ecco la list degli hotel all'interno di MainActivity.java .

     // Hotels case 0: if (A == 0){ Bundle bundle = new Bundle(); bundle.putString("restaurants", "Default"); fragmentObj = new GoogleMapsFragment(); fragmentObj.setArguments(bundle); if (!sclItems.contains(0)){ new GetHotelTask().execute(longtitude, latitude); sclItems.add(0); }else { removeHotels(); sclItems.remove((Integer)0); } A = 1; }else { if (!sclItems.contains(0)){ new GetHotelTask().execute(longtitude, latitude); sclItems.add(0); }else { removeHotels(); sclItems.remove((Integer)0); } } break; 

    Ho provato ad aggiungere info_window_layout.xml e qui è il codice.

     <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="5dp" android:adjustViewBounds="true" android:src="@drawable/ic_prof"/> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="12dp" android:textStyle="bold"/> <TextView android:id="@+id/snippet" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="10dp"/> </LinearLayout> </LinearLayout> 

    Ma, non posso caricare la mia window delle informazioni come nell'image. Ho provato diverse soluzioni tra cui questo e nessuna di queste mi ha dato una soluzione.

    Qualcuno può aiutarmi con questo?

    Grazie in anticipo. 🙂

    • Errore –

    errore

  • Android ViewPager con ScrollViews con ViewPagers all'interno di ScrollViews
  • Android - Pulsante con l'image "caricamento" di rotazione / filatura quando viene premuto
  • Android, appcompat v21, implementano tecniche di scorrimento
  • Ottenere le coordinate di un'image Bitmap da un ImageView due volte piccole
  • Errore in Android Edittext Onclick Datepickerdialog nel lollipop
  • Come aggiornare la vista di YouTube Player onItemClickListener () in un ListView
  • 4 Solutions collect form web for “Aggiungi un'image per la window delle informazioni sugli indicatori Android”

    Prova questo codice:

      Marker kiel=FragmentLeft.map.addMarker(new MarkerOptions().position(new LatLng(Double.parseDouble(p.getLatitude()), Double.parseDouble(p.getLongitude()))) .title(p.getEventName()).snippet(getLocationStringAddress(new LatLng(Double.parseDouble(p.getLatitude()), Double.parseDouble(p.getLongitude())))) .icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_set_marker))); markers.put(kiel.getId(),"http://"+strPhoto); kiel.setInfoWindowAnchor(1.95f,0.0f); hMarker.put(kiel,p); map.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() { @Override public View getInfoWindow(Marker arg0) { View myContentView = flipscreen.this.getLayoutInflater().inflate(R.layout.custommarker, null); TextView tvTitle = ((TextView) myContentView.findViewById(R.id.title)); tvTitle.setText(arg0.getTitle()); TextView tvSnippet = ((TextView) myContentView.findViewById(R.id.snippet)); tvSnippet.setText(arg0.getSnippet()); ImageView imgMarkerImage=(ImageView)myContentView.findViewById(R.id.imgMarkerImage); System.out.println("List of Event Photos = " + strPhoto); Picasso.with(flipscreen.this).load(markers.get(arg0.getId())).into(imgMarkerImage); return myContentView; } @Override public View getInfoContents(Marker marker) { return null; } }); map.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { @Override public void onInfoWindowClick(Marker marker) { Iterator myVeryOwnIterator = hMarker.keySet().iterator(); while(myVeryOwnIterator.hasNext()) { Marker key=(Marker)myVeryOwnIterator.next(); if(marker.getId().equals(key.getId())){ Event value=(Event)hMarker.get(key); Activity_Event_Details.setEventDetails(value); startActivity(new Intent(flipscreen.this,Activity_Event_Details.class)); } } } }); 

    Ho cercato di fare lo stesso per la mia app. Non ho potuto caricare le immagini nel marker come volevo.

    Quindi quello che facevo era.

    1. Creato un layout xml maps_info_window_blue

    2. Ho incluso nel layout della mia mappa.

       <fragment android:id="@+id/map_booking_frg" android:name="com.google.android.gms.maps.SupportMapFragment" android:layout_width="match_parent" android:layout_height="match_parent" /> <ImageView android:id="@+id/center_marker" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@id/shadowView" android:layout_centerHorizontal="true" android:src="@drawable/marker_start" /> <include layout="@layout/maps_info_window_blue" android:id="@+id/rl_info_window_blue" android:layout_width="wrap_content" android:layout_centerHorizontal="true" android:layout_above="@+id/shadowView" android:layout_height="wrap_content"/> <View android:id="@+id/shadowView" android:layout_width="wrap_content" android:layout_height="1dp" android:background="@color/transparent" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:visibility="invisible" /> 

    Per me, il requisito era di avere la window dell'informatore di marcatori al centro. È ansible impostarlo where vuoi.

    1. Per dare l'illusione di un marker, ho sempre impostato LatLng che voglio essere il centro della mappa (il target CameraPosition è impostato sul LatLng che voglio)

    Provare a utilizzare l'adattatore per window di informazioni. Questo ti aiuterà a pensare.

     mMap.setInfoWindowAdapter(setMarkerWindow()); private GoogleMap.InfoWindowAdapter setMarkerWindow() { return new GoogleMap.InfoWindowAdapter() { @Override public View getInfoWindow(Marker marker) { View myContentView = getLayoutInflater().inflate( R.layout.map_info_window, null); myContentView.setBackgroundColor(Color.TRANSPARENT); TextView tvTitle = ((TextView) myContentView .findViewById(R.id.title)); tvTitle.setText(marker.getTitle()); ...... return myContentView; } @Override public View getInfoContents(Marker marker) { return null; } }; } 

    Figura fuori finalmente. : D

    Modificato l' info_window_layout.xml come questo.

     <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#000000" > <LinearLayout android:id="@+id/text_box" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" > <ImageView android:id="@+id/markerImage" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/distance" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </ScrollView> 

    Quindi aggiunse una nuova class chiamata ManiInfoAdapter.java

     class MapInfoWindowAdapter implements GoogleMap.InfoWindowAdapter { private LayoutInflater inflater; private Context context; public MapInfoWindowAdapter(Context context){ inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); this.context = context; } @Override public View getInfoWindow(Marker marker) { // Getting view from the layout file View v = inflater.inflate(R.layout.info_window_layout, null); TextView title = (TextView) v.findViewById(R.id.title); title.setText(marker.getTitle()); TextView address = (TextView) v.findViewById(R.id.distance); address.setText(marker.getSnippet()); ImageView iv = (ImageView) v.findViewById(R.id.markerImage); iv.setImageResource(R.drawable.ic_attraction1); return v; } @Override public View getInfoContents(Marker marker) { return null; } } 

    Ora lavora come previsto. 🙂

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.