3.在地图上标记位置

本文介绍了如何在Android应用程序中使用Google Maps V2 API向地图添加Marker对象,包括设置Marker的交互性和自定义信息窗口。同时,文章还探讨了绘制Circle和Polygon等形状元素的方法,以及如何通过监听器接口处理地图上的触摸事件。
摘要由CSDN通过智能技术生成

3.1 问题

除了将指定的位置显示在地图的中心,应用程序还需要在该位置上加上标记,以使其更加醒目。

3.2 解决方案

(API Level 9)
向地图添加Marker对象以及Circle和Polygon等形状元素。Marker对象是通过图标定义的交互式对象,该图标显示在给定位置。该位置可以是固定的,也可以设置Marker为可由用户拖动到他们希望的任意一点。每个Marker还可以响应触摸事件,如点击和长按。此外,可以为Marker提供包括标题的元数据和文本片段,当点击标记时会在弹出信息窗口中显示这些信息。这些窗口自身也可以定制显示。
Maps v2还支持绘制离散形状元素。这些元素在本质上是不可交互的,但我们会看到,可以轻松地添加与形状交互的功能。此功能也可以用于在地图上使用Polyline形状绘制路线,其不像其他选项一样会尝试绘制闭合的、填充的形状。

要点:
Google Maps v2是作为Google Play Services库的一部分进行分发的,它在任意平台级别都不是原生SDK的一部分。然而,目标平台为API Level 9或以后版本的应用程序以及Google Play体系内的设备都可以使用此绘图库。

3.3 实现机制

显示上一节的地图应用程序,其中使用标记添加了一些感兴趣的点。

以下两段代码清单显示了新的Activity示例,其中向地图添加了一些标记。XML布局与前一节中的相同,因此我们不会花费时间再次剖析其组成部分,只是为了完整性而在此添加此布局。

res/layout/main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:text="Map Of Your Location" />
    <RadioGroup
        android:id="@+id/group_maptype"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
        <RadioButton
            android:id="@+id/type_normal"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Normal Map" />
        <RadioButton
            android:id="@+id/type_satellite"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Satellite Map" />
    </RadioGroup>
    
    <fragment
        class="com.google.android.gms.maps.SupportMapFragment" 
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</LinearLayout>

显示带有标记的地图的Activity

public class MarkerMapActivity extends FragmentActivity implements
        RadioGroup.OnCheckedChangeListener,
        GoogleMap.OnMarkerClickListener,
        GoogleMap.OnMarkerDragListener,
        GoogleMap.OnInfoWindowClickListener,
        GoogleMap.InfoWindowAdapter {
    private static final String TAG = "AndroidRecipes";

    private SupportMapFragment mMapFragment;
    private GoogleMap mMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        //检查play services是否激活且为最新版本
        int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
        switch (resultCode) {
            case ConnectionResult.SUCCESS:
                Log.d(TAG, "Google Play Services is ready to go!");
                break;
            default:
                showPlayServicesError(resultCode);
                return;
        }

        mMapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mMap = mMapFragment.getMap();

        // 监控与标记元素的交互
        mMap.setOnMarkerClickListener(this);
        mMap.setOnMarkerDragListener(this);
        // 设置应用程序以服务信息窗口的视图
        mMap.setInfoWindowAdapter(this);
        // 监控信息窗口上的点击事件
        mMap.setOnInfoWindowClickListener(this);

        // Google 总部 ( 37.427,-122.099)
        Marker marker = mMap.addMarker(new MarkerOptions()
                .position(new LatLng(37.4218, -122.0840))
                .title("Google HQ")
                // 将来
### 回答1: 要在HTML地图上添加标记,可以使用Google Maps JavaScript API或Leaflet JavaScript库。以下是一个简单的示例,使用Google Maps JavaScript API在地图上添加标记: ```html <!DOCTYPE html> <html> <head> <title>添加标记地图</title> <style> /* 设置地图容器的样式 */ #map { height: 400px; width: 100%; } </style> <!-- 引入Google Maps API的JavaScript库 --> <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script> <script> function initMap() { // 在地图容器中创建一个新的地图对象 const map = new google.maps.Map(document.getElementById("map"), { center: { lat: 37.7749, lng: -122.4194 }, zoom: 12, }); // 在地图上添加一个标记 new google.maps.Marker({ position: { lat: 37.7749, lng: -122.4194 }, map: map, title: "San Francisco", }); } </script> </head> <body onload="initMap()"> <!-- 在页面中创建一个地图容器 --> <div id="map"></div> </body> </html> ``` 在这个示例中,我们在页面中引入了Google Maps API的JavaScript库,并创建了一个名为`map`的新地图对象。我们在地图上添加了一个标记,并将其显示在`San Francisco`位置。如果要添加更多的标记,可以复制并粘贴标记创建代码,并更改标记的`position`和`title`属性来指定新的标记位置和标题。 ### 回答2: HTML是一种标记语言,可以用来创建网页。在地图上添加标记可以通过使用HTML的标记和标签来实现。 首先,我们需要一个地图容器,可以使用`<div>`元素来创建。通过给这个`<div>`元素添加一个唯一的id属性,我们可以在后续的代码中引用它。 接下来,我们需要引入一个地图API,例如Google地图或者百度地图的API。这可以通过在页面的`<head>`标签内添加一个`<script>`标签来实现。我们可以使用API提供的函数和方法来添加标记。 例如,如果我们使用的是Google地图API,可以使用以下代码来添加一个标记: ```html <!DOCTYPE html> <html> <head> <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap" async defer ></script> </head> <body> <div id="map"></div> <script> // 初始化地图 function initMap() { // 创建地图对象 var map = new google.maps.Map(document.getElementById("map"), { center: { lat: 0, lng: 0 }, zoom: 10, }); // 创建标记 var marker = new google.maps.Marker({ position: { lat: 0, lng: 0 }, map: map, title: "Hello World", }); } </script> </body> </html> ``` 在这个例子中,我们使用了Google地图的API,并在`initMap`函数中创建了一个地图对象和一个标记对象。通过设置标记对象的`position`属性来指定标记位置,然后将标记添加到地图中的`map`属性中。 注意:上面的代码中的`YOUR_API_KEY`是需要替换为你自己的Google地图API密钥。另外,还可以根据需要调整`center`和`zoom`属性来设置地图的中心和缩放级别。 ### 回答3: 在HTML中添加地图标记的代码可以使用JavaScript的地图API来实现。下面是一个简单的示例: 首先,在HTML文档的<head>标签中引入地图API的脚本。通常可以使用Google Maps API或者百度地图API,具体根据需要选择。 ``` <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap" async defer></script> ``` 其中,`YOUR_API_KEY`应该替换为你自己的有效API密钥。同时,`callback=initMap`指定了一个名为`initMap`的回调函数。 接下来,在HTML文档的<body>标签中创建一个用于显示地图的div元素: ``` <div id="map"></div> ``` 然后,在JavaScript部分创建并初始化地图,并在地图上添加标记: ``` <script> function initMap() { var mapOptions = { center: {lat: 40.7128, lng: -74.0060}, // 地图中心点的经纬度 zoom: 12 //地图缩放级别 }; var map = new google.maps.Map(document.getElementById('map'), mapOptions); var marker = new google.maps.Marker({ position: {lat: 40.7128, lng: -74.0060}, // 标记的经纬度 map: map, // 标记要显示在哪张地图上 title: 'New York City' // 标记的标题 }); } </script> ``` 在上面的代码中,使用`google.maps.Map`创建地图对象,并设置地图的中心点和缩放级别。然后,使用`google.maps.Marker`创建标记对象,并设置标记位置、要显示在哪张地图上以及标题。 在以上代码的注释中,可以根据实际需求进行相应的修改。 最后,调用`initMap()`函数以初始化地图并在页面上显示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值