ユーザーが落としたピンから緯度と経度を取得するにはどうすればよいですか? Googleマップと同様に、地図上のピンをクリックすると、ピンの緯度と経度が表示されます。誰か助けてくれますか?どうもありがとう。地図上にピンの緯度と経度を表示する方法(Androidスタジオ)
写真のように、緯度と経度を表示しています。
ユーザーが落としたピンから緯度と経度を取得するにはどうすればよいですか? Googleマップと同様に、地図上のピンをクリックすると、ピンの緯度と経度が表示されます。誰か助けてくれますか?どうもありがとう。地図上にピンの緯度と経度を表示する方法(Androidスタジオ)
写真のように、緯度と経度を表示しています。
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;
}
});
をカスタムレイアウトを作成し、追加し、この効率的なソリューション試してみてください:
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;
}
申し訳ありませんが、画像を投稿するのを忘れていました。私はポストに新しい写真を追加します。これをチェックしてください。ありがとう。 –
地図上に新しいマーカーを追加しているようです。 – jeprubio
あなたは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;
}
});
をクリックしてください。申し訳ありませんが、画像を投稿するのを忘れていました。私はポストに新しい写真を追加します。これをチェックしてください。ありがとう。 –
マーカーを更新し、情報ウィンドウを 'marker.showInfoWindow();'で表示することができます。または、イメージとしてマップ上に別のレイアウトを配置し、onMarkerDragEndメソッドでコンテンツを更新する(このレイアウトをマップに重ねるようにMapLayout内にマップとこのレイアウトを配置する)、この 'window'を常に同じ場所に移動し、その内容と可視性を更新します。また、BottomSheetDialogFragmentを使用すると、必要な効果に応じて情報を表示することもできます。 – jeprubio
あなたの場合、私はinfoWindow(goo.gl/H559at)を使用せず、マップと他のViewGroup(RelativeLayout、LinearLayout ...)を使ってFrameLayoutを探し、その内容と可視性をonMarkerDragEndに更新しますあなたはこの情報をいつも同じ場所に置いておきたいと思っています。 – jeprubio
それの短いが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();
}
申し訳ありませんが、トーストしません。テキストはピンで表示されます。 –
これは例です。もちろん、自分のウィジェットを作成しなければならないのです – oldMammuth
私は答えを更新し、あなたのために働く場合はカスタムレイアウトをやろうとしました – MKovac
すみません、getLayoutInflaterとは何ですか? –
アンドロイドアクティビティからの方法です。しかし、必要な場合は、LayoutInflater.from(コンテキスト)を使用して、外部からのインフレータを持つことができます。 – jeprubio