地图覆盖物是固定在地图上的图片。
“Java” Bitmap bitmap = BitmapFactory.decodeStream(getAssets().open("images/avocado.jpg")); String fileName = "maomao.jpg"; String path = "/data/data/com.huawei.hms.maps.demo/avocado.jpg"; BitmapDescriptor descriptorFromAsset = BitmapDescriptorFactory.fromAsset("images/avocado.jpg"); BitmapDescriptor descriptorFromBitmap = BitmapDescriptorFactory.fromBitmap(bitmap); BitmapDescriptor descriptorFromFile = BitmapDescriptorFactory.fromFile(fileName); BitmapDescriptor descriptorFromPath = BitmapDescriptorFactory.fromPath(path); BitmapDescriptor descriptorFromResource = BitmapDescriptorFactory.fromResource(R.drawable.makalong);
“Kotlin” val bitmap = BitmapFactory.decodeStream(assets.open("images/avocado.jpg")) val fileName = "maomao.jpg" val path = "/data/data/com.huawei.hms.maps.demo/avocado.jpg" val descriptorFromAsset = BitmapDescriptorFactory.fromAsset("images/avocado.jpg") val descriptorFromBitmap = BitmapDescriptorFactory.fromBitmap(bitmap) val descriptorFromFile = BitmapDescriptorFactory.fromFile(fileName) val descriptorFromPath = BitmapDescriptorFactory.fromPath(path) val descriptorFromResource = BitmapDescriptorFactory.fromResource(R.drawable.makalong)
“Java” String path = "/data/data/com.huawei.hms.maps.demo/avocado.jpg"; BitmapDescriptor descriptor = BitmapDescriptorFactory.fromPath(path); GroundOverlayOptions options = new GroundOverlayOptions().position(new LatLng(48.893478, 2.334595), 60, 30).image(descriptor);
“Kotlin” var path = "/data/data/com.huawei.hms.maps.demo/avocado.jpg"; var descriptor = BitmapDescriptorFactory.fromPath(path); val options = GroundOverlayOptions().position(LatLng(48.893478, 2.334595), 60f, 30f).image(descriptor)
“Java”
private GroundOverlay mGroundOverlay;
// 在地图上增加覆盖物
mGroundOverlay = hMap.addGroundOverlay(options); “Kotlin”
private var mGroundOverlay: GroundOverlay? = null
// 在地图上增加覆盖物
mGroundOverlay = hMap.addGroundOverlay(options) “Java”
if (null != mGroundOverlay) {
// 设置覆盖物
mGroundOverlay.setImage(BitmapDescriptorFactory.fromResource(R.drawable.makalong));
}
if (null != mGroundOverlay) {
// 移除覆盖物
mGroundOverlay.remove();
} “Kotlin”
if (null != mGroundOverlay) {
// 设置覆盖物
mGroundOverlay?.setImage(BitmapDescriptorFactory.fromResource(R.drawable.makalong))
}
if (null != mGroundOverlay) {
// 移除覆盖物
mGroundOverlay?.remove()
}
position(LatLng location, float width)和position(LatLng location, float width, float height)不可与positionFromBounds(LatLngBounds bounds)同时使用,否则会抛出IllegalStateException异常。
此方法会根据经纬度位置和图片宽度width参数(单位:米)设置覆盖物。在显示时,图片的高度根据图片的宽高比例和width参数自动计算匹配。
此方法会根据经纬度位置、图片宽度width参数和图片高度height参数(单位:米)设置覆盖物。在显示时,图片会被缩放来适应指定的尺寸,图片可能会变形。
此方法会指定一个LatLngBounds对象,该对象由两个LatLng对象形成一个矩形区域,分别为西南角southwest和东北角northeast,此方法会根据该矩形区域设置覆盖物的位置。
覆盖物点击事件
可以使用HuaweiMap.OnGroundOverlayClickListener来侦听覆盖物上的点击事件。要在地图上设置此侦听器,请调用HuaweiMap对象的setOnGroundOverlayClickListener(HuaweiMap.OnGroundOverlayClickListener)方法。当用户点击覆盖物时,onGroundOverlayClick(GroundOverlay)将回调该覆盖物。
“Java”
hMap.setOnGroundOverlayClickListener(new HuaweiMap.OnGroundOverlayClickListener() {
@Override
public void onGroundOverlayClick(GroundOverlay groundOverlay) {
Toast.makeText(getApplicationContext(), "GroundOverlay is clicked.", Toast.LENGTH_LONG).show();
}
}); “Kotlin”
hMap.setOnGroundOverlayClickListener { Toast.makeText(applicationContext, "GroundOverlay is clicked.", Toast.LENGTH_LONG).show() }