默认显示路线和地图图标 - Mapfragment Android

时间:2016-03-10 13:30:15

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

enter image description here

您好,
1.请在突出显示的区域中找到路线和地图图标 这些是在我的位置蓝色圆圈上显示的。
3.想要在地图加载后立即显示这些图标,而无需用户触摸。

以下是代码:

 protected void loadMap(GoogleMap googleMap, String latlng) {
        if (googleMap != null) {
            googleMap.setMyLocationEnabled(true);
            googleMap.getUiSettings().setMapToolbarEnabled(true);
            googleMap.getUiSettings().setMyLocationButtonEnabled(true);
            String[] latlngAry = latlng.split(",");
            double lat = Double.parseDouble(latlngAry[0]);
            double lng = Double.parseDouble(latlngAry[1]);
            LatLng latlong = new LatLng(lat, lng);

            BitmapDescriptor defaultMarker =
                    BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE);

            Marker marker = googleMap.addMarker(new MarkerOptions()
                    .position(latlong)
                    .title("My Location")
                    .icon(defaultMarker));


            marker.showInfoWindow();
            googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latlong, 18));  }

1 个答案:

答案 0 :(得分:1)

单击标记时显示的叠加层会在现场隐式创建和销毁。你无法手动显示(还)。

如果您必须具备此功能,则可以使用2个ImageView在地图上创建叠加层,并在点击它们时调用相应的意图:

// Directions
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(
        "http://maps.google.com/maps?saddr=51.5, 0.125&daddr=51.5, 0.15"));
startActivity(intent);
// Default google map
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(
        "http://maps.google.com/maps?q=loc:51.5, 0.125"));
startActivity(intent);

注意:您需要根据Marker的getPosition()和用户的位置更改坐标。

现在要隐藏默认覆盖,您需要做的就是在OnMarkerClickListener中返回true。虽然你没有能力在标记上显示InfoWindows和中心摄像头,但你可以模仿它:

mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
    @Override
    public boolean onMarkerClick(Marker marker) {
        marker.showInfoWindow();
        mMap.animateCamera(CameraUpdateFactory.newLatLng(marker.getPosition()));
        return true;
    }
});