0

我想要一個custom info window出現在點擊。谷歌地圖的自定義信息窗口android

我希望它是這樣的:

ImageView 

TextView 

TextView 

TextView 

Button Button 

我看到其他的帖子質詢時,但它仍然是撲朔迷離。

+0

好一個InfoWindows不是實時視圖,所以你不能把一個按鈕放在InfoWindow中,並期望聽點擊事件 – tyczj

+0

有無論如何,我可以讓它點擊標記將允許我點擊按鈕,如果不是通過信息窗口 – user3748957

+0

打開對話框上的標記點擊 – tyczj

回答

1

關於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。我不知道它是否適用於我的代碼,但似乎適用於按鈕和圖像按鈕。

+0

這個作品的大部分,但圖像沒有顯示 – user3748957

+0

對我來說,它的工作原理,我已經測試它在發佈之前 – Kurtis92

相關問題