最終更新:
moonlight_aska 2016年04月09日(土) 11:11:05履歴
- MainActivity.java
- Location#distanceBetweenメソッドで, タッチした地点と目的地との間の最短距離を求める.
pckage com.moonlight_aska.android.googlemapv2;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.OnMapClickListener;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import android.location.Location;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.widget.Toast;
public class MainActivity extends FragmentActivity {
// 関西国際空港 : 34.435912,135.24349641
private LatLng mKansai = new LatLng(34.435912, 135.243496);
private GoogleMap mMap = null;
private Marker mMarker = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mMap = ( (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map) ).getMap();
if (mMap != null) {
// 関西国際空港へ移動
CameraPosition cameraPos = new CameraPosition.Builder()
.target(mKansai).zoom(10).build();
mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPos));
// 目標地点設定
mMap.addMarker(new MarkerOptions().position(mKansai).title("関西国際空港"));
// マーカー準備
mMarker = mMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("現在地"));
// タップ時のイベントハンドラ登録
mMap.setOnMapClickListener(new OnMapClickListener() {
@Override
public void onMapClick(LatLng point) {
// TODO Auto-generated method stub
// タッチ地点と目的地との最短距離の計算
float[] results = new float[1];
Location.distanceBetween(point.latitude, point.longitude, mKansai.latitude, mKansai.longitude, results);
Toast.makeText(getApplicationContext(), "関空までの距離:" + ( (Float)(results[0]/1000) ).toString() + "Km", Toast.LENGTH_LONG).show();
mMarker.setPosition(point);
}
});
}
}
}
- 動作例

このページへのコメント
askaです.
回答が遅くなりました.
現在は, getMap()は非推奨となり, getMapAsync()を
使用するようになったようです.
getMapAsync()については, Google APIs for Androidの
リファレンスでご確認ください.
com.google.android.gms.maps.MapFragment
mMap = ( (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map) ).getMap();
この文でgetMapが補完機能で表示されませんでした。
ちなみにverは2.2.3です。
mMap = ( (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map) ).getMap();
この文でgetMapが補完機能で表示されませんでした。
ちなみにverは2.2.3です。
mMap = ( (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map) ).getMap();
この文でgetMapが補完機能で表示されませんでした。
ちなみにverは2.2.3です。