最終更新:
moonlight_aska 2013年10月26日(土) 00:21:10履歴
「Googleマップを表示する」を参照し, Googleマップが表示できるようにする.

- MainActivity.java
- GoogleMapのインスタンスを取得する.
- マーカー設定位置を指定して, LatLngのインスタンスを生成する.
- MakerOptionsのインスタンスを生成する.
- MakerOptions#positionメソッドで, マーカーの位置を設定する.
- GoogleMap#addMarkerメソッドで, マーカーを登録する.
package 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.SupportMapFragment;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
public class MainActivity extends FragmentActivity {
// 六甲山:北緯34度46分41秒, 東経135度15分49秒}
private double mLatitude = 34.0d + 46.0d/60 + 41.0d/(60*60);
private double mLongitude = 135.0d + 15.0d/60 + 49.0d/(60*60);
private GoogleMap mMap = 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) {
LatLng location = new LatLng(mLatitude, mLongitude);
CameraPosition cameraPos = new CameraPosition.Builder()
.target(location).zoom(10.0f)
.bearing(0).build();
mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPos));
// マーカー設定
MarkerOptions options = new MarkerOptions();
options.position(location);
mMap.addMarker(options);
}
}
}
- 動作例

- MarkerItem.java
- OverlayItemクラスを継承する.
package com.moonlight_aska.android.web.googlemap02;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.OverlayItem;
public class MarkerItem extends OverlayItem {
public MarkerItem(GeoPoint point, String arg1, String arg2) {
super(point, arg1, arg2);
// TODO Auto-generated constructor stub
}
}
- MarkerOverlay.java
- ItemizedOverlayクラスを継承する.
- コンストラクタ
- ItemizedOverlay#boundCenterメソッドで, マーカーの(0,0)を中央に指定する.
- createItemメソッドで, 指定した座標位置にマーカーを生成する.
- sizeメソッドで, マーカーを表示する座標位置数を返す.
- addMakerメソッドで, マーカーを表示する座標位置を追加する.
package com.moonlight_aska.android.web.googlemap02;
import java.util.ArrayList;
import java.util.List;
import android.graphics.drawable.Drawable;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.ItemizedOverlay;
public class MarkerOverlay extends ItemizedOverlay<MarkerItem> {
private List<GeoPoint> mPoints = new ArrayList<GeoPoint>();
public MarkerOverlay(Drawable defaultMarker) {
super(boundCenter(defaultMarker));
// TODO Auto-generated constructor stub
}
@Override
protected MarkerItem createItem(int i) {
// TODO Auto-generated method stub
GeoPoint point = mPoints.get(i);
return new MarkerItem(point, "", "");
}
@Override
public int size() {
// TODO Auto-generated method stub
return mPoints.size();
}
public void addMarker(GeoPoint point) {
mPoints.add(point);
populate();
}
}
- MainActivity.java
- Drawableのインスタンスを取得する.
- MarkerOverlayのインスタンスを生成する.
- MapView#getOverlays#addメソッドで, オーバーレイを追加する.
- MarkerOverlay#addMarkerで, マーカー位置を設定する.
package com.moonlight_aska.android.web.googlemap02;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
public class MainActivity extends MapActivity {
// 六甲山:北緯34度46分41秒, 東経135度15分49秒
private int mLatitude = (int)( (34.0d + 46.0d/60 + 41.0d/(60*60) ) * 1E6);
private int mLongitude = (int)( (135.0d + 15.0d/60 + 49.0d/(60*60) ) * 1E6);
MarkerOverlay mOverlay;
MapView mView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mView = (MapView)findViewById(R.id.mapview);
GeoPoint geoPo = new GeoPoint(mLatitude, mLongitude);
mView.getController().animateTo(geoPo);
// オーバーレイ表示
Drawable marker = getResources().getDrawable(R.drawable.marker);
mOverlay = new MarkerOverlay(marker);
mView.getOverlays().add(mOverlay);
// マーカー設定
mOverlay.addMarker(geoPo);
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}
- 動作例

このページへのコメント
説明下手ですみません。他のサイトである地点の座標を調べて、度分秒に変換してきたものに書き換えて動作させたのですが、そのときに表示させようとしていた場所とずれた場所に表示されていました。ですので、度分秒に変換させずに、そのままの座標の数値で表示をさせたくて質問しました。
ですが、「各マーカーに対応した処理をする」のページを見て解決することが出来ました。
askaです.
「ポイントをもう少し細かく指定する」とはどういう意味でしょうか?
もう少し具体的に何をどうしたいか記載願います.
先日は丁寧なアドバイスを頂き、ありがとうございました。
今回は「マーカーを表示させる」を参考にさせてもらったのですが、マーカーを表示させるポイントをもう少し細かく指定することは可能でしょうか?