2017-05-30 7 views
0

マーカーをクリックせずに地図を表示するツールバーが必要です。しかし、マーカーをクリックするまでは、常に非表示になっています。私を助けてください。私はグーグルで何とかしてみた。しかし、何も働いていない。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:PLAY-サービスマップ:10.2.0'

コンパイル「com.google.android.gms :play-services-location:10.2.0 '

+0

出力されますuはそれを修正する方法任意のアイデアを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メソッドの外に移動する必要があります

+0

をまだクリックしていない状態で値が表示されますが、マーカーをクリックする必要があります。 –

+0

プロジェクトをクリーンアップすると、コードはonMarkerClickメソッド外になります。 マーカーをクリックしたときにツールバーを表示するのは意味がありません。 –

+0

私はプロジェクトもきれいだった。まだ動かない。何も変わらない。私はそれを表示するにはまだそれをクリックする必要があります –

1

マーカーがクリックされたときに表示されるオーバーレイが作成され、オンザスポットの暗黙を破壊するため、手動で表示することはできません。

あなたが例えば2 ImageViewであなたのマップの上にオーバーレイを作成することができます変更あなたのマーカーgetPosition()およびユーザの位置に基づいて座標を

// 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); 

をし、あなたが

+0

はsaddr私の現在の位置です、そしてdaddrは場所を置きますか? –

+0

はい開始アドレスにはsaddr、宛先アドレスにはdaddr –

関連する問題