Google Earth API for Android 是一组允许开发者在Android应用中集成Google Earth功能的接口和工具。它提供了3D地球可视化、地理空间数据展示和交互功能。
原因:
解决方案:
// 检查设备支持
private boolean checkSystemRequirements() {
ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
return activityManager.getDeviceConfigurationInfo().reqGlEsVersion >= 0x20000;
}
// 确保正确初始化
Earth earth = Earth.getInstance(getApplicationContext());
if (earth != null) {
MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map);
mapFragment.init(earth, new Earth.OnEarthReadyListener() {
@Override
public void onEarthReady(Earth earth) {
// Earth实例准备就绪
}
});
}
原因:
解决方案:
earth.setOnFeatureClickListener(new Earth.OnFeatureClickListener() {
@Override
public boolean onFeatureClick(Earth earth, Feature feature) {
// 处理标记点击
Toast.makeText(MainActivity.this, "点击了: " + feature.getName(), Toast.LENGTH_SHORT).show();
return true;
}
});
原因:
解决方案:
public class MainActivity extends FragmentActivity {
private Earth earth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化Earth实例
Earth.initialize(this, new Earth.EarthInitListener() {
@Override
public void onEarthInitSuccess() {
earth = Earth.getInstance(MainActivity.this);
setupMap();
}
@Override
public void onEarthInitFailure(Exception e) {
Log.e("EarthAPI", "初始化失败", e);
}
});
}
private void setupMap() {
MapFragment mapFragment = (MapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.init(earth, new Earth.OnEarthReadyListener() {
@Override
public void onEarthReady(Earth earth) {
// 设置初始视角
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(new LatLng(40.7128, -74.0060)) // 纽约
.zoom(15)
.tilt(45)
.build();
earth.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
// 添加标记
MarkerOptions markerOptions = new MarkerOptions()
.position(new LatLng(40.7128, -74.0060))
.title("纽约市")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED));
earth.addMarker(markerOptions);
}
});
}
}
private void loadKmlFromAssets() {
try {
InputStream inputStream = getAssets().open("sample.kml");
earth.addKmlData(inputStream, new Earth.OnKmlLoadListener() {
@Override
public void onKmlLoaded(Feature feature) {
Log.d("KML", "KML加载成功");
}
@Override
public void onKmlLoadFailed(Exception e) {
Log.e("KML", "KML加载失败", e);
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
没有搜到相关的文章