Android -- 谷歌地图绘制

引言

集成之后,在项目中肯定要打点,画线(实线,虚线),绘制区域等。

Android 谷歌地图绘制轨迹polyline

在Android中使用Google Maps绘制轨迹polyline的基本步骤如下:

  1. 确保你的项目已经正确集成了Google Play services。

  2. 获取GoogleMap实例。

  3. 使用PolylineOptions添加路线信息。

  4. 在GoogleMap上添加polyline。

Kotlin 复制代码
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Polyline;
import com.google.android.gms.maps.model.PolylineOptions;
 
// 假设你已经有了一个有效的GoogleMap实例googleMap
 
// 一系列坐标点,代表轨迹的路线
LatLng point1 = new LatLng(37.35, -122.0);
LatLng point2 = new LatLng(37.45, -122.0);
LatLng point3 = new LatLng(37.55, -122.0);
LatLng[] points = new LatLng[] {point1, point2, point3};
 
// 创建PolylineOptions来设置线的样式和属性
PolylineOptions polylineOptions = new PolylineOptions()
        .addAll(points)
        .color(Color.BLUE) // 设置线的颜色
        .width(5f); // 设置线的宽度
 
// 在GoogleMap上添加polyline
Polyline polyline = googleMap.addPolyline(polylineOptions);

确保在你的ActivityFragment中处理Google Map的生命周期事件,例如onResume()onPause(),以保证地图正确显示。

Android 谷歌地图绘制虚线轨迹

在Android中使用Google Maps绘制虚线轨迹,你可以使用Polyline类,并设置合适的样式。以下是一个简单的例子:

  1. 首先,确保你已经在你的项目中集成了Google Maps SDK。

  2. 在你的ActivityFragment中,获取GoogleMap实例。

  3. 使用Polyline类和setGeodesic方法来绘制曲线。

  4. 使用setColorsetWidth方法设置线的颜色和宽度。

  5. 使用setPattern方法设置线的图案,这里我们使用DashPathEffect来创建虚线。

示例代码:

Kotlin 复制代码
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Polyline;
import com.google.android.gms.maps.model.PolylineOptions;
 
import android.graphics.DashPathEffect;
import android.graphics.Color;
import android.graphics.PathEffect;
 
public class MapsActivity extends AppCompatActivity {
 
    private GoogleMap mMap;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        
        // 获取GoogleMap实例
        mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
        
        // 创建一个LatLng列表,表示线的路径
        List<LatLng> latLngs = new ArrayList<>();
        latLngs.add(new LatLng(37.77, -122.42));
        latLngs.add(new LatLng(21.23, -157.8));
        latLngs.add(new LatLng(-18.14, 178.4));
        
        // 创建Polyline
        PolylineOptions polylineOptions = new PolylineOptions()
                .addAll(latLngs)
                .color(Color.BLUE) // 线的颜色
                .width(8) // 线的宽度
                .geodesic(true); // 是否绘制为球面曲线
        
        // 设置虚线样式
        float[] dashWidths = {10f, 10f}; // 虚线和空白区的长度
        PathEffect pathEffect = new DashPathEffect(dashWidths, 0);
        polylineOptions.pattern(Arrays.asList(new PatternItem(PatternItem.DOT), new PatternItem(PatternItem.GAP, 20)));
        
        // 在地图上添加Polyline
        Polyline polyline = mMap.addPolyline(polylineOptions);
    }
}

请确保你的activity_maps.xml布局文件中有一个<fragment>元素用于加载Google Maps,并且你已经处理好了Google Maps的权限和API键。

这段代码会在Google Maps上绘制一条虚线,连接你提供的多个点。你可以通过调整dashWidths数组来改变虚线的样式,比如改变线段的长度或者空白区域的大小。

Android 谷歌地图绘制特定区域

这里拿一个心形举例子

在Android中使用Google Maps绘制一个心形区域,你可以通过自定义Polygon的形状来实现。以下是一个简单的实现示例:

  1. 确保你已经在项目中正确集成了Google Maps SDK。

  2. 获取Google Maps API的密钥,并确保它在AndroidManifest.xml中配置正确。

  3. 在布局文件中添加MapView

  4. 在Activity中,编写代码来初始化和自定义Polygon

Kotlin 复制代码
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Polygon;
import com.google.android.gms.maps.model.PolygonOptions;
 
// 假设你已经有一个GoogleMap对象,名为googleMap
 
private void drawHeartPolygon(GoogleMap googleMap, LatLngBounds bounds) {
    // 创建心形的20个顶点
    ArrayList<LatLng> heartPoints = new ArrayList<>();
    // ... 填充心形的20个顶点的逻辑 ...
 
    // 使用PolygonOptions来设置Polygon的样式
    PolygonOptions polygonOptions = new PolygonOptions();
    polygonOptions.addAll(heartPoints);
    polygonOptions.strokeColor(Color.BLUE); // 边界线条颜色
    polygonOptions.fillColor(Color.RED); // 填充颜色
    polygonOptions.strokeWidth(2f); // 边界线条宽度
 
    // 将Polygon添加到Google Map上
    Polygon polygon = googleMap.addPolygon(polygonOptions);
 
    // 确保多边形在视图中
    googleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 50));
}

在这个示例中,heartPoints是一个包含心形区域顶点的LatLng列表。你需要根据实际需求自行计算这些顶点的位置。PolygonOptions用于设置多边形的样式,如边界线条颜色、填充颜色、线条宽度等。最后,使用googleMap.addPolygon(polygonOptions)将心形区域添加到Google Maps上。

请注意,你需要自行计算心形区域的20个顶点位置,并填充到heartPoints列表中。此外,googleMap.moveCamera调用用于确保多边形区域在地图视图中可见,bounds是多边形区域的边界,而50是边界与地图视图之间的填充值。

确保在实际应用中处理好生命周期管理和权限请求,例如在onResume中激活地图,在onPause中释放资源等。

相关推荐
雨白1 天前
Android 快捷方式实战指南:静态、动态与固定快捷方式详解
android
hqk1 天前
鸿蒙项目实战:手把手带你实现 WanAndroid 布局与交互
android·前端·harmonyos
LING1 天前
RN容器启动优化实践
android·react native
恋猫de小郭1 天前
Flutter 发布官方 Skills ,Flutter 在 AI 领域再添一助力
android·前端·flutter
Kapaseker1 天前
一杯美式搞懂 Any、Unit、Nothing
android·kotlin
黄林晴1 天前
你的 Android App 还没接 AI?Gemini API 接入全攻略
android
恋猫de小郭2 天前
2026 Flutter VS React Native ,同时在 AI 时代 VS Native 开发,你没见过的版本
android·前端·flutter
冬奇Lab2 天前
PowerManagerService(上):电源状态与WakeLock管理
android·源码阅读
BoomHe2 天前
Now in Android 架构模式全面分析
android·android jetpack
二流小码农2 天前
鸿蒙开发:上传一张参考图片便可实现页面功能
android·ios·harmonyos