Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

custom info window adapter with custom data in map v2

I want to make custom info window adapter in map v2 in android as like below.

enter image description here

I have seen below link but doesn't get more.

1,2,3,

below is my content layout file.

<?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> 

So any one help me how can i set data to all views in infowindow adapter?

like image 678
Girish Bhutiya Avatar asked Feb 26 '13 13:02

Girish Bhutiya


2 Answers

Try this

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

In this way you can create custom Layout and achieve the way you want to do.

Let me know if it helps you.

like image 141
moDev Avatar answered Sep 28 '22 03:09

moDev


I have open dialog onMarker() click. and setContentView(my layout).

I have use below code.

@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; 
like image 45
Girish Bhutiya Avatar answered Sep 28 '22 01:09

Girish Bhutiya