使 Google Maps Android 标记处理多行

Posted

技术标签:

【中文标题】使 Google Maps Android 标记处理多行【英文标题】:Make Google Maps Android marker handle multiple lines 【发布时间】:2019-11-13 04:53:27 【问题描述】:

如何使 Google Maps android 标记标题处理多行?现在只显示一行

see this marker title for reference

【问题讨论】:

您的图片链接似乎无效,正在获取502 bad gateway。请检查一次。 @xaif 我没有收到这个错误 图片无论如何都没用 希望对您有所帮助,1) 。 ***.com/questions/15090148/…2)***.com/questions/43374214/… custom info window adapter with custom data in map v2的可能重复 【参考方案1】:

1) 一个简单的方法是在标记标题中使用“\n”:

driversMarker = mMap.addMarker(new MarkerOptions()
                                            .icon(BitmapDescriptorFactory.fromResource(R.drawable.bike_top_left))
                                            .title("Click To Call.\n again nextline")
                                            .snippet("Driver ID: " + key)
                                            .position(location));

2) 另一种方法是使用自定义信息窗口适配器:

布局 XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:layout_
            android:layout_
            android:orientation="vertical"
            android:layout_gravity="center_horizontal"
            android:gravity="center"
            android:background="@android:color/white"

         >



                <TextView
                    android:layout_
                    android:layout_
                    android:id="@+id/txtPickupInfo"
                    android:text="Pickup Here"
                    android:textStyle="bold"
                    />
                <TextView
                    android:layout_
                    android:layout_
                    android:id="@+id/txtPickupSnippet"
                    android:text="Optional"
                    android:textStyle="bold"
                    />

            </LinearLayout>

Java:自定义信息窗口:

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;

import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.model.Marker;

public class CustomInfoWindow   implements GoogleMap.InfoWindowAdapter 


    View myView;

    public CustomInfoWindow(Context context) 
        myView=LayoutInflater.from(context).inflate(R.layout.custom_rider_info_window,null);
    

    @Override
    public View getInfoWindow(Marker marker) 
        TextView textPickupTitle = ((TextView)myView.findViewById(R.id.txtPickupInfo));
        TextView textPickupSnippet = ((TextView)myView.findViewById(R.id.txtPickupSnippet));

        textPickupTitle.setText(marker.getTitle());
        textPickupSnippet.setText(marker.getSnippet());

        return myView;
    

    @Override
    public View getInfoContents(Marker marker) 
        return null;
    

用途:

public class MapActivity extends AppCompatActivity
        implements GoogleMap.OnInfoWindowClickListener 






 @Override
    public void onInfoWindowClick(Marker marker) 

 // do something when click the info window.





  @Override
    public void onMapReady(GoogleMap googleMap) 
        mMap = googleMap;

mMap.setInfoWindowAdapter(new CustomInfoWindow(this));
mMap.setOnInfoWindowClickListener(this);

 


当你设置你的标记时:

 if(driversMarker!=null)
 driversMarker.showInfoWindow();

【讨论】:

以上是关于使 Google Maps Android 标记处理多行的主要内容,如果未能解决你的问题,请参考以下文章

Google Maps Android API v2,错误的标记位置

Android Google Maps URL 查询 - 离线放置标记

居中位图标记(Google Maps Android API v2)

Google Maps Android v2 中的集群标记

用户如何通过点击 google maps android 添加标记?

Google Maps Android API - 如何在拖动时移动标记的锚点