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中释放资源等。

相关推荐
Dingdangr3 小时前
Android中的Intent的作用
android
技术无疆3 小时前
快速开发与维护:探索 AndroidAnnotations
android·java·android studio·android-studio·androidx·代码注入
GEEKVIP3 小时前
Android 恢复挑战和解决方案:如何从 Android 设备恢复删除的文件
android·笔记·安全·macos·智能手机·电脑·笔记本电脑
Jouzzy10 小时前
【Android安全】Ubuntu 16.04安装GDB和GEF
android·ubuntu·gdb
极客先躯11 小时前
java和kotlin 可以同时运行吗
android·java·开发语言·kotlin·同时运行
Good_tea_h13 小时前
Android中的单例模式
android·单例模式
计算机源码社18 小时前
分享一个基于微信小程序的居家养老服务小程序 养老服务预约安卓app uniapp(源码、调试、LW、开题、PPT)
android·微信小程序·uni-app·毕业设计项目·毕业设计源码·计算机课程设计·计算机毕业设计开题
丶白泽19 小时前
重修设计模式-结构型-门面模式
android
晨春计20 小时前
【git】
android·linux·git
标标大人21 小时前
c语言中的局部跳转以及全局跳转
android·c语言·开发语言