2017-05-30 193 views
0

我想让我的地图显示工具栏而不点击标记。但它总是隐藏,直到我点击标记。请帮帮我。我尝试了一些Google搜索的方式。但没有任何工作。mMap.getUiSettings()。setMapToolbarEnabled(true);当标记没有被点击时没有显示

@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"/> 

编译 'com.google.android.gms:发挥服务,地图:10.2.0'

编译“com.google.android.gms :play-services-location:10.2.0'

+0

做üHV任何想法如何解决呢? @KayoLima –

+0

我可以给你一个示例,其中可以创建标记并在其上绘制文本。但是您可能需要自定义的文字绘图。如果你愿意,我可以放置代码。根据您的要求,它会显示默认值,没有点击标记 – Stallion

回答

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

+0

感谢您的答案。我赞赏它。我会用它。 –

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)); 
} 
+0

仍然无法正常工作,我仍然需要点击标记 –

+0

清理您的项目,代码在onMarkerClick方法之外。 单击标记时显示工具栏没有任何意义。 –

+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()和用户的位置,并点击

+0

是我的当前loc和saddr th loc loc? –

+0

是saddr的开始地址和daddr的目标地址 –