自定义信息窗口适配器与地图v2中的自定义数据
我想在android中的地图v2中制作自定义信息窗口适配器,如下所示。
我看到下面的链接,但没有得到更多。
1,2,3 ,
下面是我的内容布局文件。
<?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>
所以任何一个帮助我如何将数据设置为infowindow适配器中的所有视图?
尝试这个
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(); } }); } }
通过这种方式,您可以创build自定义布局并实现您想要的方式。
让我知道,如果它可以帮助你。
我已经打开对话框onMarker()
点击。 和setContentView(my layout)
。
我使用下面的代码。
@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;
- 你如何检查在Android的互联网连接?
- android:windowSoftInputMode =“adjustResize”没有任何区别?
- Android ART运行时是否与Dalvik有相同的方法限制?
- 升级到AppCompat v22.1.0,现在得到IllegalArgumentException:AppCompat不支持当前的主题function
- 默认安装应用程序,授予INSTALL_PACKAGES权限
- Android – dynamic添加视图到视图
- 你如何获得ViewPager for Android的当前页码?
- 更新Android Studio后发生Gradle生成错误
- Android Volley ImageLoader – BitmapLruCache参数?