2017-09-01 16 views

答えて

0
public class YOURACTIVITY extends AppCompatActivity implements OnMapReadyCallback 

private GoogleMap mMap; 
<-- 
OnCreate 
SupportMapFragment map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)); 
     map.getMapAsync(this); 

--> 

    public void onMapReady(GoogleMap googleMap) { 
     mMap = googleMap; 
     double mLat = LATITUDE; 
     double mLon = LONTITUDE; 
     LatLng mylocation = new LatLng(mLat, mLon); 
     mMap.addMarker(new MarkerOptions().position(mylocation).snippet("TEXT BELLOW TITLE").title("TITLE")).showInfoWindow(); 
     mMap.setMyLocationEnabled(true); 
     mMap.getUiSettings().setMyLocationButtonEnabled(true); 
     mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(mylocation,15)); 
    } 

UPDATE はこのような何かを追加行うようにしてください。情報

mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() { 
      @Override 
      public View getInfoWindow(Marker marker) { 
       return null; 
      } 

      @Override 
      public View getInfoContents(Marker marker) { 
       View view = MainActivity.getLayoutInflater().inflate(R.layout.map_custom, null); 


       TextView titleTextView = (TextView) view.findViewById(R.id.map_title); 
       TextView snippetTextView = (TextView) view.findViewById(R.id.map_snippet); 

       titleTextView.setText(marker.getTitle()); 
       snippetTextView.setText(marker.getSnippet()); 

       return view; 
      } 
     }); 
+0

私は答えを更新し、あなたのために働く場合はカスタムレイアウトをやろうとしました – MKovac

+0

すみません、getLayoutInflaterとは何ですか? –

+0

アンドロイドアクティビティからの方法です。しかし、必要な場合は、LayoutInflater.from(コンテキスト)を使用して、外部からのインフレータを持つことができます。 – jeprubio

1

をカスタムレイアウトを作成し、追加し、この効率的なソリューション試してみてください:

public void onMapLongClick(LatLng point) { 
    pin.setText("New marker [email protected]" + point.toString());   
    //Create a marker object 
    Marker myMarker = map.addMarker(new MarkerOptions().position(point).title(point.toString())); 

    //And now you can use it's values 
    myMarker.getPosition().latitude; 
    myMarker.getPosition().longitude; 
} 
+0

申し訳ありませんが、画像を投稿するのを忘れていました。私はポストに新しい写真を追加します。これをチェックしてください。ありがとう。 –

+0

地図上に新しいマーカーを追加しているようです。 – jeprubio

0

あなたはsetOnMarkerDragListenerメソッドを使用することができます

mMap.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() { 
    @Override 
    public void onMarkerDragStart(Marker marker) { 

    } 

    @Override 
    public void onMarkerDrag(Marker marker) { 

    } 

    @Override 
    public void onMarkerDragEnd(Marker marker) { 
     double latitude = marker.getPosition().latitude; 
     double longitude = marker.getPosition().longitude; 
    } 
}); 
+0

をクリックしてください。申し訳ありませんが、画像を投稿するのを忘れていました。私はポストに新しい写真を追加します。これをチェックしてください。ありがとう。 –

+0

マーカーを更新し、情報ウィンドウを 'marker.showInfoWindow();'で表示することができます。または、イメージとしてマップ上に別のレイアウトを配置し、onMarkerDragEndメソッドでコンテンツを更新する(このレイアウトをマップに重ねるようにMapLayout内にマップとこのレイアウトを配置する)、この 'window'を常に同じ場所に移動し、その内容と可視性を更新します。また、BottomSheetDialogFragmentを使用すると、必要な効果に応じて情報を表示することもできます。 – jeprubio

+0

あなたの場合、私はinfoWindow(goo.gl/H559at)を使用せず、マップと他のViewGroup(RelativeLayout、LinearLayout ...)を使ってFrameLayoutを探し、その内容と可視性をonMarkerDragEndに更新しますあなたはこの情報をいつも同じ場所に置いておきたいと思っています。 – jeprubio

0

それの短いがMarker.getPosition()メソッドを使用することですが、多分トーストで:

@Override 
public void onMarkerDragEnd(Marker marker) { 
    LatLng pos = marker.getPosition(); 
    Toast.makeText(MainActivity.this, "Point coordinates: " + pos.latitude 
     + ", " + pos.longitude, Toast.LENGTH_LONG).show(); 
} 
+0

申し訳ありませんが、トーストしません。テキストはピンで表示されます。 –

+0

これは例です。もちろん、自分のウィジェットを作成しなければならないのです – oldMammuth

関連する問題