use*_*957 1 android google-maps infowindow google-maps-markers android-button
我想要点击custom info window
时出现marker
。
我希望它是这样的:
ImageView
TextView
TextView
TextView
Button Button
Run Code Online (Sandbox Code Playgroud)
我看到了其他人对此的帖子问题,但仍然令人困惑。
关于ImageView和TextView,试试这个:
\n\n设置信息窗口布局:infowindowlayout.xml
\n\n<?xml version="1.0" encoding="utf-8"?>\n<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"\nandroid:layout_width="wrap_content"\nandroid:layout_height="wrap_content"\nandroid:orientation="vertical"\nandroid:background="#FFFFFF" >\n\n<ImageView\n android:id="@+id/imageView1"\n android:layout_width="wrap_content"\n android:layout_height="wrap_content" />\n\n<TextView\n android:id="@+id/textView1"\n android:layout_width="wrap_content"\n android:layout_height="wrap_content"\n android:text="TextView" />\n\n<TextView\n android:id="@+id/textView2"\n android:layout_width="wrap_content"\n android:layout_height="wrap_content"\n android:text="TextView" />\n\n</LinearLayout>\n
Run Code Online (Sandbox Code Playgroud)\n\n在您的MapActivity中(这是一个标记的示例,但您也可以将其用于其他标记):
\n\npublic class MapActivity extends Activity {\nprivate GoogleMap mMap;\nprivate Marker Somewhere;\nprivate int markerclicked;\n@Override\nprotected void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n setContentView(R.layout.activity_map);\n...\n...\nfinal LatLng somewhere = new LatLng(..., ...);\n\nSomewhere=mMap.addMarker(new MarkerOptions()\n.position(somewhere)\n.title("YOUR TITLE")\n.snippet("INFO")\n.icon(BitmapDescriptorFactory.fromResource(R.drawable.pin)));\n\n...\n...\n...\n\nmMap.setInfoWindowAdapter(new InfoWindowAdapter() {\n\n // Use default InfoWindow frame\n @Override\n public View getInfoWindow(Marker arg0) {\n return null;\n }\n\n // Defines the contents of the InfoWindow\n @Override\n public View getInfoContents(Marker arg0) {\n\n // Getting view from the layout file infowindowlayout.xml\n View v = getLayoutInflater().inflate(R.layout.infowindowlayout, null);\n\n LatLng latLng = arg0.getPosition();\n\n ImageView im = (ImageView) v.findViewById(R.id.imageView1);\n TextView tv1 = (TextView) v.findViewById(R.id.textView1);\n TextView tv2 = (TextView) v.findViewById(R.id.textView2);\n String title=arg0.getTitle();\n String informations=arg0.getSnippet();\n\n tv1.setText(title);\n tv2.setText(informations);\n\n if(onMarkerClick(arg0)==true && markerclicked==1){\n im.setImageResource(R.drawable.yourdrawable);\n }\n\n\n return v;\n\n }\n });\n}\n\npublic boolean onMarkerClick(final Marker marker) {\n\nif (marker.equals(Somewhere)) \n {\n markerclicked=1;\n return true;\n }\nreturn false; \n}\n
Run Code Online (Sandbox Code Playgroud)\n\n关于Buttons、ImageButtons等没有办法。文档说:
\n\n\n\n\n正如前面有关信息窗口的部分所述,信息窗口不是实时视图,而是将视图渲染为地图上的图像。因此,您在视图上设置的任何侦听器都将被忽略,并且您无法区分视图各个部分上的单击事件。建议您不要在自定义信息窗口中放置交互式组件 \xe2\x80\x94,例如按钮、复选框或文本输入 \xe2\x80\x94。
\n
无论如何,似乎有一个解决方案,请参阅这里的答案。我不知道它是否适用于我的代码,但它似乎适用于按钮和图像按钮。
\n 归档时间: |
|
查看次数: |
6580 次 |
最近记录: |