用Muliline信息窗口映射标记

时间:2017-04-19 20:56:38

标签: java google-maps android-studio marker

以下代码中的文字未完全显示在信息窗口中(如下所示):

mMap.addMarker(new MarkerOptions().position(the_local_user2).title("My Title").snippet("My Snippet"+"\n"+"1st Line Text"+"\n"+"2nd Line Text"+"\n"+"3rd Line Text")
            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)));

enter image description here

我希望它看起来与此相似:

enter image description here

我找到了Marker-Plugins SDK,但我不知道它是否好。

如何让信息窗口显示多行文字?

1 个答案:

答案 0 :(得分:1)

您可以使用多行文字创建custom info window

要做到这一点,您只需在GoogleMap.InfoWindowAdapter中实施Activity,并为信息窗口为自定义View充气。然后拨打GoogleMap#setInfoWindowAdapter

public class MapActivity extends AppCompatActivity imeplements OnMapReadyCallback, GoogleMap.InfoWindowAdapter {

    private GoogleMap mGoogleMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstaceState);
        setContentView(r.layout.activity_map);

        SupportMapFragment fragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
        fragment.getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        googleMap.setInfoWindowAdapter(this);
        mGoogleMap = googleMap;
    }

    @Override
    public View getInfoWindow(Marker marker) {
        return null; // Use default info window background
    }

    @Override
    public View getInfoContents(Marker marker) {
        View view = getLayoutInflater().inflate(R.layout.info_window_multiline, null);

        TextView titleTextView = (TextView) view.findViewById(R.id.title);
        TextView snippetTextView = (TextView) view.findViewById(R.id.snippet);

        titleTextView.setText(marker.getTitle());
        snippetTextView.setText(marker.getSnippet());

        return view;
    }

}

此外,Cordova GoogleMaps Plugin适用于使用CordovaPhoneGap开发框架的应用程序;不适用于原生Android开发。 Google Maps Android API用于本地开发;它似乎已经在使用了。不要混淆两者。