2017-05-30 105 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的目標地址 –