多个自定义信息窗口使用1 xml布局Maps api v2

时间:2014-03-09 09:05:51

标签: android api google-maps

我正在尝试在自定义信息窗口中显示图像,我有20个自定义信息窗口使用相同的布局但是在运行代码时它们看起来完全相同,因为它们都使用相同的TextView。

            map.setInfoWindowAdapter(new InfoWindowAdapter(){

          @Override
          public View getInfoContents(Marker arg0) {
          View v = getLayoutInflater().inflate(R.layout.custommarker, null);
         LinearLayout ll = (LinearLayout)findViewById(R.id.ll);
                                                    TextView tv = new TextView(this);
            tv.setText("Text");
            ll.addView(tv);          
                                                return v;

                                                                }

                                            @Override
public View getInfoWindow(Marker arg0) {
return null;        
      }                                     
                                                            });    

我可以在默认信息窗口中显示图像吗?如果不是,我将如何使用此布局获得所有自定义标记,

感谢

2 个答案:

答案 0 :(得分:1)

在这里,我看到了一个演示如何实现Custom Info Window

首先将Marker添加到Google Map,例如:

static final LatLng MELBOURNE = new LatLng(-37.81319, 144.96298);
Marker melbourne = mMap.addMarker(new MarkerOptions()
                      .position(MELBOURNE)
                      .title("Melbourne")
                      .snippet("Population: 4,137,400"));

现在,当您点击Marker然后Custom Info Window触发器时,您将使用getTitle()和使用getSnippet()的标记摘要获得特定的标记标题,如:

  map.setInfoWindowAdapter(new InfoWindowAdapter(){

      @Override
      public View getInfoContents(Marker marker) {

      View v = getLayoutInflater().inflate(R.layout.custommarker, null);
      LinearLayout ll = (LinearLayout)findViewById(R.id.ll);

      TextView title = new TextView(this);
      title.setText(marker.getTitle());
      ll.addView(title);   

      TextView snipp = new TextView(this);
      snipp.setText(marker.getSnippet());
      ll.addView(snipp);   

      return v;

    }

     @Override
     public View getInfoWindow(Marker arg0) {
        return null;        
    }                                     
  });    

输出:当您点击Marker然后Custom Info Window显示如下:

enter image description here

更新:您的应用程序崩溃了,这是

的原因
 LinearLayout ll = (LinearLayout)findViewById(R.id.ll);

更改为

 LinearLayout ll = (LinearLayout)v.findViewById(R.id.ll);

你的LinearLayout来自夸大的布局。

答案 1 :(得分:0)

我使用了代码

        MarkerOptions MarkerT = new MarkerOptions().snippet("Hello");
                                                       MarkerT.title(postc.getAuthor());
                                                       MarkerT.position(new LatLng(postc.getLat(), postc.getLong()));
                                                       MarkerT.icon(BitmapDescriptorFactory.fromBitmap(bmp));

                                                       Marker marker = map.addMarker(MarkerT);
                                                       map.setInfoWindowAdapter(new InfoWindowAdapter(){

                                                              @Override
                                                              public View getInfoContents(Marker marker) {

                                                              View v = getLayoutInflater().inflate(R.layout.custommarker, null);
                                                              LinearLayout ll = (LinearLayout)findViewById(R.id.ll);

                                                            ink(marker.getSnippet(),ll);   

                                                              return v;

                                                            }

                                                             @Override
                                                             public View getInfoWindow(Marker arg0) {
                                                                return null;        
                                                            }                                     
                                                          }); 

这导致崩溃,我不确定为什么,谢谢你的回复:) ink =创建textView的方法。