studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones android infowindow android-maps-v2

para - manual de programacion android pdf



Adaptador de ventana de información personalizada con datos personalizados en el mapa v2 (2)

Quiero hacer un adaptador de ventana de información personalizado en el mapa v2 en Android como a continuación.

He visto el enlace a continuación, pero no obtiene más.

1 , 2, 3 ,

a continuación está mi archivo de diseño de contenido.

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ImageView android:id="@+id/infocontent_iv_image" android:layout_width="150dp" android:layout_height="150dp" android:layout_alignParentTop="true" /> <RelativeLayout android:id="@+id/infocontent_rl_middle" android:layout_below="@id/infocontent_iv_image" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="5dp" > </RelativeLayout> <TextView android:id="@+id/infocontent_tv_name" android:layout_below="@id/infocontent_rl_middle" android:layout_width="match_parent" android:layout_height="wrap_content" android:textStyle="bold" android:layout_margin="5dp" /> <TextView android:id="@+id/infocontent_tv_type" android:layout_below="@id/infocontent_tv_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="#CCCCCC" android:layout_margin="5dp" /> <TextView android:id="@+id/infocontent_tv_desc" android:layout_below="@id/infocontent_tv_type" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="5dp" /> <TextView android:id="@+id/infocontent_tv_addr" android:layout_below="@id/infocontent_tv_desc" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="5dp" /> </RelativeLayout>

Entonces, ¿alguien me puede ayudar cómo puedo establecer datos para todas las vistas en el adaptador de infowindow?


Prueba esto

windowlayout.xml

<?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="vertical"> <TextView android:id="@+id/tv_lat" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/tv_lng" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>

MainActivity.java

public class MainActivity extends FragmentActivity { GoogleMap googleMap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Getting reference to the SupportMapFragment of activity_main.xml SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); // Getting GoogleMap object from the fragment googleMap = mapFragment.getMap(); // Setting a custom info window adapter for the google map googleMap.setInfoWindowAdapter(new 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.windowlayout, null); // Getting the position from the marker LatLng latLng = arg0.getPosition(); // Getting reference to the TextView to set latitude TextView tvLat = (TextView) v.findViewById(R.id.tv_lat); // Getting reference to the TextView to set longitude TextView tvLng = (TextView) v.findViewById(R.id.tv_lng); // Setting the latitude tvLat.setText("Latitude:" + latLng.latitude); // Setting the longitude tvLng.setText("Longitude:"+ latLng.longitude); // Returning the view containing InfoWindow contents return v; } }); // Adding and showing marker while touching the GoogleMap googleMap.setOnMapClickListener(new OnMapClickListener() { @Override public void onMapClick(LatLng arg0) { // Clears any existing markers from the GoogleMap googleMap.clear(); // Creating an instance of MarkerOptions to set position MarkerOptions markerOptions = new MarkerOptions(); // Setting position on the MarkerOptions markerOptions.position(arg0); // Animating to the currently touched position googleMap.animateCamera(CameraUpdateFactory.newLatLng(arg0)); // Adding marker on the GoogleMap Marker marker = googleMap.addMarker(markerOptions); // Showing InfoWindow on the GoogleMap marker.showInfoWindow(); } }); } }

De esta manera, puede crear un diseño personalizado y lograr la forma en que desea hacerlo.

Avísame si te ayuda.


Tengo un diálogo abierto onMarker() haga clic en. y setContentView(my layout) .

Tengo uso debajo del código.

@Override public boolean onMarkerClick(Marker arg0) { if(arg0.getSnippet() == null){ mMap.moveCamera(CameraUpdateFactory.zoomIn()); return true; } //arg0.showInfoWindow(); final DataClass data = myMapData.get(arg0); final Dialog d = new Dialog(MainActivity.this); d.requestWindowFeature(Window.FEATURE_NO_TITLE); //d.setTitle("Select"); d.getWindow().setBackgroundDrawable(new ColorDrawable(Color.WHITE)); d.setContentView(R.layout.info_content); ivPhoto = (ImageView)d.findViewById(R.id.infocontent_iv_image); AddImageOnWindow executeDownload = new AddImageOnWindow(); final LatLng l = arg0.getPosition(); executeDownload.execute(l); TextView tvName = (TextView)d.findViewById(R.id.infocontent_tv_name); tvName.setText(data.getPlaceName()); TextView tvType = (TextView)d.findViewById(R.id.infocontent_tv_type); tvType.setText("("+data.getPlaceType()+")"); TextView tvDesc = (TextView)d.findViewById(R.id.infocontent_tv_desc); tvDesc.setText(data.getPlaceDesc()); TextView tvAddr = (TextView)d.findViewById(R.id.infocontent_tv_addr); tvAddr.setText(Html.fromHtml(data.getPlaceAddr())); d.show(); return true;