我想要一個custom info window
出現在點擊。谷歌地圖的自定義信息窗口android
我希望它是這樣的:
ImageView
TextView
TextView
TextView
Button Button
我看到其他的帖子質詢時,但它仍然是撲朔迷離。
我想要一個custom info window
出現在點擊。谷歌地圖的自定義信息窗口android
我希望它是這樣的:
ImageView
TextView
TextView
TextView
Button Button
我看到其他的帖子質詢時,但它仍然是撲朔迷離。
關於ImageView的和TextView的,試試這個:
設置信息窗口的佈局:infowindowlayout.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"
android:background="#FFFFFF" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
</LinearLayout>
在你MapActivity(這是一個標記的例子,但你可以使用這也適用於其他標記):
public class MapActivity extends Activity {
private GoogleMap mMap;
private Marker Somewhere;
private int markerclicked;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
...
...
final LatLng somewhere = new LatLng(..., ...);
Somewhere=mMap.addMarker(new MarkerOptions()
.position(somewhere)
.title("YOUR TITLE")
.snippet("INFO")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.pin)));
...
...
...
mMap.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 infowindowlayout.xml
View v = getLayoutInflater().inflate(R.layout.infowindowlayout, null);
LatLng latLng = arg0.getPosition();
ImageView im = (ImageView) v.findViewById(R.id.imageView1);
TextView tv1 = (TextView) v.findViewById(R.id.textView1);
TextView tv2 = (TextView) v.findViewById(R.id.textView2);
String title=arg0.getTitle();
String informations=arg0.getSnippet();
tv1.setText(title);
tv2.setText(informations);
if(onMarkerClick(arg0)==true && markerclicked==1){
im.setImageResource(R.drawable.yourdrawable);
}
return v;
}
});
}
public boolean onMarkerClick(final Marker marker) {
if (marker.equals(Somewhere))
{
markerclicked=1;
return true;
}
return false;
}
關於按鈕,ImageB uttons等沒有辦法。 documentation說:
正如在信息窗口上一節所述,信息窗口不是實時視圖,而是視圖呈現爲地圖上的圖像。因此,您在視圖上設置的所有偵聽器都被忽略,並且無法區分視圖各個部分的點擊事件。建議您不要在自定義信息窗口中放置交互式組件(如按鈕,複選框或文本輸入)。
無論如何,似乎有一個解決方案,見this answer here。我不知道它是否適用於我的代碼,但似乎適用於按鈕和圖像按鈕。
這個作品的大部分,但圖像沒有顯示 – user3748957
對我來說,它的工作原理,我已經測試它在發佈之前 – Kurtis92
好一個InfoWindows不是實時視圖,所以你不能把一個按鈕放在InfoWindow中,並期望聽點擊事件 – tyczj
有無論如何,我可以讓它點擊標記將允許我點擊按鈕,如果不是通過信息窗口 – user3748957
打開對話框上的標記點擊 – tyczj