mMap.getUiSettings()setMapToolbarEnabled(真)。未单击标记时未显示

时间:2017-05-30 12:44:05

标签: android google-maps google-maps-api-3

我希望我的地图显示工具栏而不点击标记。但是在我点击标记之前它总是隐藏起来。请帮我。我试过用谷歌搜索得到的方式。但没有人工作。

@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;
    mMap.addMarker(new MarkerOptions().position(new LatLng(latitude,longitude)).icon(BitmapDescriptorFactory.defaultMarker()));
    mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
        @Override
        public boolean onMarkerClick(Marker marker) {
            mMap.getUiSettings().setMapToolbarEnabled(true);
            return false;
        }
    });
    mMap.getUiSettings().setZoomControlsEnabled(true);
    mMap.getUiSettings().setAllGesturesEnabled(false);
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitude, longitude), 16));
    mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitude, longitude), 16));
}

布局

<fragment
      android:id="@+id/mapFragment"
      class="com.google.android.gms.maps.SupportMapFragment"
      android:layout_width="match_parent"
      android:layout_height="200dp"/>
  

compile&#39; com.google.android.gms:play-services-maps:10.2.0&#39;

     

compile&#39; com.google.android.gms:play-services-location:10.2.0&#39;

3 个答案:

答案 0 :(得分:1)

您无法手动显示该内容,因为点击标记时显示的叠加层会在现场隐藏时被创建和销毁。

您可以使用2 ImageView在地图上创建叠加层,例如:

// Directions
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("http://maps.google.com/maps?saddr=21.5, 0.15&daddr=-49.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);

根据您的标记getPosition()和用户的位置更改坐标,并在点击时调用相应的意图

答案 1 :(得分:1)

您可以创建带有图标的自定义标记,并根据您的要求绘制文本。

注意:

  

但是使用以下示例,您需要根据自定义   您的具体要求

mGoogleMap.addMarker(new MarkerOptions()
          .position(LatLonPosition)
          .icon(BitmapDescriptorFactory
          .fromBitmap(writeTextOnImage(R.drawable.routemarker,"Your text"),this))));

创建可绘制图像的方法

private Bitmap writeTextOnImage(int drawableId, String text,Context context) {
        Bitmap bitmapObj = BitmapFactory.decodeResource(getResources(), drawableId)
                .copy(Bitmap.Config.ARGB_8888, true);
        Typeface tf = Typeface.create("Helvetica", Typeface.BOLD);
        //Create Paint object
        //Define style attributes
        Paint lPaint = new Paint();
        lPaint.setStyle(Paint.Style.FILL);
        lPaint.setColor(Color.WHITE);
        lPaint.setTypeface(tf);
        lPaint.setTextAlign(Paint.Align.CENTER);
        lPaint.setTextSize(convertToPixels(context, 11));
        Rect textRect = new Rect();
        lPaint.getTextBounds(text, 0, text.length(), textRect);
        Canvas lCanvas = new Canvas(bm);
        if(textRect.width() >= (lCanvas.getWidth() - 4))     
        {
            lPaint.setTextSize(convertToPixels(context, 7)); 
        }
        int xPos = (lCanvas.getWidth() / 2) - 2;     
        int yPos = (int) ((lCanvas.getHeight() / 2)) ;
        lCanvas.drawText(text, xPos, yPos, lPaint);
        return  bitmapObj;
    }

以下将是输出

enter image description here

答案 2 :(得分:0)

您必须将代码移到onClick方法之外,如下所示:

@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;
    mMap.getUiSettings().setMapToolbarEnabled(true);
    mMap.addMarker(new MarkerOptions().position(new LatLng(latitude,longitude)).icon(BitmapDescriptorFactory.defaultMarker()));
    mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
        @Override
        public boolean onMarkerClick(Marker marker) {

            return false;
        }
    });
    mMap.getUiSettings().setZoomControlsEnabled(true);
    mMap.getUiSettings().setAllGesturesEnabled(false);
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitude, longitude), 16));
    mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitude, longitude), 16));
}