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.
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;