.snippet中的多行或折线(google maps apiv2)

时间:2013-06-30 14:35:16

标签: google-maps google-maps-android-api-2 google-maps-api-2 infowindow

我正在谷歌地图APIv2中开发。我现在面临的问题是我只能在info windows / snippet中添加一行单词。但是我想要的输出能够以断线形式显示,如下图所示。那么有没有可能的方法来解决它?

示例:

协调:03.05085,101.70506

限速:80公里/小时

public class MainActivity extends FragmentActivity {
  static final LatLng SgBesi = new LatLng(03.05085, 101.76022);
  static final LatLng JB = new LatLng(1.48322, 103.69065);
  private GoogleMap map;


  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
            .getMap();

    map.addMarker(new MarkerOptions().position(SgBesi)
        .title("KM D7.7 Sungai Besi")               //name
        .snippet("Coordinate: 03.05085, 101.70506"));   //description

    map.addMarker(new MarkerOptions().position(JB)
        .title("test") 
        .snippet("Hey, how are you?")); 

       // .icon(BitmapDescriptorFactory  //set icon
       //     .fromResource(R.drawable.ic_launcher)));

    // move the camera instantly with a zoom of 15.
    map.moveCamera(CameraUpdateFactory.newLatLngZoom(SgBesi, 15));

    // zoom in, animating the camera.       
    map.animateCamera(CameraUpdateFactory.zoomTo(15), 2000, null);
   }
}

3 个答案:

答案 0 :(得分:21)

您需要使用custom InfoWindowAdapterInfoWindow的布局更改为使用布局文件定义的自定义设计。基本上你需要:

  1. 使用GoogleMap.setInfoWindowAdapter(Yourcustominfowindowadpater)
  2. 声明您的功能
  3. 有如下课程:
  4. ...

    class Yourcustominfowindowadpater implements InfoWindowAdapter {
        private final View mymarkerview;
    
        Yourcustominfowindowadpater() {
            mymarkerview = getLayoutInflater()
                .inflate(R.layout.custominfowindow, null); 
        }
    
        public View getInfoWindow(Marker marker) {      
            render(marker, mymarkerview);
            return mymarkerview;
        }
    
        public View getInfoContents(Marker marker) {
           return null;
        }
    
        private void render(Marker marker, View view) {
           // Add the code to set the required values 
           // for each element in your custominfowindow layout file
        }
    }
    

答案 1 :(得分:0)

您必须使用InfoWindowAdapter来创建自定义信息窗口。默认实现以某种方式从片段中删除换行符,这可能被视为一个小错误。

答案 2 :(得分:0)

我想向@tony添加内容,根据documentation,您无法在自定义视图中添加操作,因为它在运行时绘制为图像。

  

注意:绘制的信息窗口不是实时视图。观点是   在它的时候呈现为图像(使用View.draw(Canvas))   回。这意味着对视图的任何后续更改都不会   通过地图上的信息窗口反映出来。更新信息窗口   稍后(例如,在图像加载后),调用showInfoWindow()。   此外,信息窗口不会考虑任何交互性   典型的普通视图,如触摸或手势事件。不管你   可以在整个信息窗口上收听通用点击事件   在下面的部分中描述。