最終更新:
moonlight_aska 2014年02月02日(日) 21:39:29履歴
Googleマップに図形(Polygon, Polyline)を描画する順番(重なり順番)を指定するには, PolygonOptionsクラスまたはPolylineOptionsクラスを利用する.
- MainActivity.java
- PolygonOptionsのインスタンスを取得する.
- PolygonOptions#zIndexメソッドで, Z方向の位置を指定する.
package com.moonlight_aska.android.web.googlemap003;
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.PolygonOptions;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
public class MainActivity extends FragmentActivity {
private static final LatLng[] AIRPORT =
{ new LatLng(34.785500, 135.438004), // 伊丹
new LatLng(34.635021, 135.225104), // 神戸
new LatLng(34.427299, 135.244003) };// 関西
private static final int[] COLOR = { Color.BLUE, Color.RED, Color.GREEN };
private static final LatLng OSAKA_STATION = new LatLng(34.702177, 135.495114);
private static final double WIDTH = 0.30f;
private static final double HEIGHT = 0.30f;
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) {
CameraPosition cameraPos = new CameraPosition.Builder()
.target(OSAKA_STATION).zoom(10.0f)
.bearing(0).build();
mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPos));
// 描画内容の設定
PolygonOptions[] options = new PolygonOptions[3];
for (int i=0; i<3; i++) {
options[i] = new PolygonOptions();
// 緯度・経度
options[i].add(AIRPORT[i]);
options[i].add(new LatLng(AIRPORT[i].latitude+WIDTH, AIRPORT[i].longitude));
options[i].add(new LatLng(AIRPORT[i].latitude+WIDTH, AIRPORT[i].longitude+HEIGHT));
options[i].add(new LatLng(AIRPORT[i].latitude, AIRPORT[i].longitude+HEIGHT));
// 線色
options[i].strokeColor(COLOR[i]);
// 塗り色
options[i].fillColor(COLOR[i]);
// 重なり順番を逆に設定(数字が大きい方ものを前面に表示)
options[i].zIndex(10.0f - i);
mMap.addPolygon(options[i]);
}
}
}
}
- 動作例

↓ 重なり順番を逆に

コメントをかく