GoogleMap----android篇(2)

Android Google Map实例 - 添加Google Map自定义图层(Android mapview) 上篇:Android Google Map应用实例 - 创建一个Google Map例程(Android mapview) 通常情况光有地图还是不够的,如何添加一个自定义的图层,譬如说把一个热点,一个基站地址标注在地图上。如下步骤帮你完成Android Google Map 自定义图层的添加   创建一个 ItemizedOverlay 类 新建一个 Java 类 HelloI 阅读详情

因手头项目主要是做地图图层渲染和栅格点。
所以在此讲一下主要的实现思路,因为当时做的时候也是参考各种API和网上搜索相关的教程。
图层渲染:
项目需求,根据不同的指标对不同的国家渲染不同的颜色,比如中国在指标>200范围,要将中国板块渲染成红色
思路:
获取中国板块的geojson数据,也就是中国板块的描边数据,将这些数据进行解析,封装成Map集合,这些数据包括单一图层数据和混合图层数据,然后使用googlemap提供的API添加覆盖图层。
相关代码片段:

    /**
     * 设置单一图层国家数据
     * @param mSimpCountry mSimpCountry
     * @param fileName fileName
     */
    @Override
    public void setSimpCountry(HashMap<String, List<LatLng>> mSimpCountry,
            String fileName)
    {
        this.simpCountry = mSimpCountry;
        if (mSimpCountry != null)
        {
            Iterator<Entry<String, List<LatLng>>> it = mSimpCountry.entrySet().iterator();
            while (it.hasNext())
            {
                Map.Entry<String, List<LatLng>> entry = (Map.Entry<String, List<LatLng>>) it.next();
                List<LatLng> list = entry.getValue();
                String id = entry.getKey();
                if (list != null)
                {
                    if (list.size() > 0)
                    {
                        drawCountryPolygon(list, presenter.getColorWithId(id, fileName));
                    }
                }
            }
            /*            Iterator<String> iterator = mSimpCountry.keySet().iterator();
                        while (iterator.hasNext())
                        {
                            String id = iterator.next();
                            List<LatLng> list = mSimpCountry.get(id);
                            // LogUtil.i(id);
                            if (list != null)
                            {
                                if (list.size() > 0)
                                {
                                    drawCountryPolygon(list,
                                            presenter.getColorWithId(id, fileName));
                                }
                            }
                        }*/
        }
    }

    /**
     * 设置多图层国家数据集合
     * @param multiCountryLatLng 混合图层国家
     * @param fileName 混合图层国家文件
     */
    @Override
    public void setMultiCountry(HashMap<String, List<List>> multiCountryLatLng,
            String fileName)
    {
        this.multiCountry = multiCountryLatLng;
        if (null != multiCountry)
        {
            Iterator<Entry<String, List<List>>> it = multiCountry.entrySet().iterator(); 
            List<LatLng> totalList = new ArrayList<LatLng>();
            while (it.hasNext())
            {
                Map.Entry<String, List<List>> entry = (Map.Entry<String, List<List>>)it.next();
                List<List> list = entry.getValue();
                String id = entry.getKey();
                for (int i = 0; i < list.size(); i++)
                {
                    List<LatLng> list2 = list.get(i);
                    for (int j = 0; j < list2.size(); j++)
                    {
                        totalList.add(list2.get(j));
                    }
                    if (totalList != null)
                    {
                        if (totalList.size() > 0)
                        {
                            drawCountryPolygon(totalList,
                                    presenter.getColorWithId(id, fileName));
                        }
                    }
                    totalList.clear();
                }
            }
        }
        //Iterator<String> multiIterator = ultiCountry.keySet().iterator();
/*        
        while (multiIterator.hasNext())
        {
            String multiId = multiIterator.next();
            List<List> list = ultiCountry.get(multiId);
            for (int i = 0; i < list.size(); i++)
            {
                List<LatLng> list2 = list.get(i);
                for (int j = 0; j < list2.size(); j++)
                {
                    totalList.add(list2.get(j));
                }
                if (totalList != null)
                {
                    if (totalList.size() > 0)
                    {
                        drawCountryPolygon(totalList,
                                presenter.getColorWithId(multiId, fileName));
                    }
                }
                totalList.clear();
            }
        }*/
    }

    /**
     * 绘制图层
     * @param list list
     * @param queryColor queryColor
     */
    @Override
    public void drawCountryPolygon(List<LatLng> list, String queryColor)
    {

        ooPolygon = new PolygonOptions();
        ooPolygon.addAll(list);
        ooPolygon.fillColor(Color.parseColor(queryColor))
                .strokeColor(Color.parseColor("#333333"))
                .strokeWidth(Constants.NUM_0F5);
        if (ooPolygon.getPoints() != null)
        {
            if (ooPolygon.getPoints().size() >= Constants.NUM_2)
            {
                if (mGoogleMap != null)
                {
                    mGoogleMap.addPolygon(ooPolygon);
                }
            }
        }
    }

注意事项:
因为使用的version比较旧,没有地图加载完成的回调,会抛出BitmapDescriptorFactory异常,当时解决这个问题也参考了许多,包括Stack Overflow,还是未能找到解决的办法,因为没办法使用googlemap的OnMapReadyCallback,我自己的解决办法就是在onResume加强判断,initMap可以在onCreate中调用

 @Override
    public void onResume()
    {
        super.onResume();
        if (mGoogleMap != null)
        {
            mGoogleMap.clear();
            initMapSetting(mGoogleMap);
        }
        mGoogleMap = mMap.getMap();
        initMapSetting(mGoogleMap);
        if (simpCountry != null && simpCountry.size() > 0
                && multiCountry != null && multiCountry.size() > 0)
        {
            setSimpCountry(simpCountry, quota);
            setMultiCountry(multiCountry, quota);
        }
        else
        {
            // 初始化图层
            initPolygon(quota);
        }
        // 设置地图监听
        setMapListener();
    }*
     * 初始化地图相关
     */

private void initMap()
{

    mMap = SupportMapFragment.newInstance();
    this.getActivity().getSupportFragmentManager().beginTransaction()
            .replace(R.id.map_container, mMap).commit();
    mGoogleMap = mMap.getMap();
    if (mGoogleMap != null)
    {
        mGoogleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
        // mGoogleMap.setMapType(GoogleMap.MAP_TYPE_NONE);
        setMapListener();
        initMapSetting(mGoogleMap);
    }
}
    /**
 * 设置地图相关
 * @param googleMap googleMap
 */
private void initMapSetting(GoogleMap googleMap)
{
    UiSettings settings = googleMap.getUiSettings();
    settings.setCompassEnabled(false);
    settings.setZoomControlsEnabled(true);
    settings.setAllGesturesEnabled(true);
    settings.setRotateGesturesEnabled(false);
    settings.setTiltGesturesEnabled(false);
}
布局文件:
<FrameLayout
    android:id="@+id/map_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

此问题得以解决
下一篇会继续讲解地图的点击事件和栅格点优化方案

Android GoogleMap 接入 如要运行使用 Maps SDK for Android 的应用,您必须将其部署到搭载 Android 4.0 或更高版本且包含 Google API 的 Android 设备或 Android 模拟器。 阅读详情

相关推荐

Android GoogleMap接入

首先你要下载官方demo这是必须的,然后开始配置你自己的项目吧 一、Google Map接入sdk,别的不说,肯定是看看有没有文档和demo吧。一.1、Google的文档和demoGoogle Map Android 示例代码 注册和API秘钥通过这Google的这两个,主要就说要我们做这么几件事 1、去 GitHub 上的 Google Maps repo 下载Google的地图demo

qq_31558407的博客 5142

Google Map学习(一) 简单的Google Map,Google Map基础

  Google地图API1、 什么是Google地图API  Google地图API是一种通过JavaScript将Google地图嵌入到您的网页的API。它提供了很多处理地图的功能(类似网页http://ditu.google.cn/上的那些功能)和向地图添加内容的服务,让您能够在您的网站上创建功能全面的地图应用。一个地图API密钥只对一个“目录”或域有效(你必须有Google 帐户才...

weixin_33790053的博客 1243

Android应用中使用GoogleMap实现定位的详细指南

开发者可以自定义GoogleMap的样式来适应应用的视觉需求。通过修改样式,可以改变地图的色彩、标记的外观,甚至可以隐藏某些元素。以下是如何在代码中应用地图样式的基本步骤:if (gMap!= null) {// 从资源文件或在线API获取样式字符串try {// 在这里可以是任何从资源文件或在线获取的JSON格式的样式字符串此外,开发者还可以通过Google Map的样式编辑器来可视化地调整地图样式,然后将生成的样式JSON代码嵌入到应用中。

weixin_42613018的博客 1122

Google Guava Maps的使用

在某些场景下,想要比较两个Map的不同,如果自己手动写的话,实现起来代码烦杂,此时可以使用Guava提供的Maps类的difference方法,实现快速的比较不同,结果保存在不同的map中,主要方法如下: import com.google.common.collect.MapDifference; import com.google.common.collect.Maps; import java.util.HashMap; import java.util.Map; public class Gua

Gee_Zer的博客 925

Chronos时间序列预测实战:从零开始微调你的第一个大语言模型(附完整代码)

本文提供了一份详细的Chronos时间序列预测大语言模型微调实战指南。从环境搭建、数据预处理到模型配置与训练,手把手教你如何利用自己的数据微调Chronos模型,并完成评估与部署,助你快速掌握这一前沿技术。

zzz56的博客 300

EfficientNet中的MBConv模块详解:为什么它能如此高效?

本文深度解析了EfficientNet中的MBConv模块,详细介绍了其核心设计理念、效率优化技术和复合缩放理论。MBConv通过深度可分离卷积、倒残差结构和注意力机制三大关键技术,实现了计算效率与模型性能的平衡,成为高效网络结构设计的典范。

tcp8optimizer的博客 349

google map 接入指南——map 详解

讲解Google map类基本用法和使用场景 map model 地图模型 学习google map,我们要知道其思想是通过建立一些模型和实体概念来简化相关认识。 BitmapDescriptor 定义位图图像。  BitmapDescriptorFactory 用于创建位图图像的定义,用于标记图标和地面叠加。  ButtCap 在Polyline 实线笔划图案...

sjh_389510506的博客 3455

别再死记硬背参数了!手把手教你用Fluent欧拉模型搞定流化床模拟(附颗粒粘度/体积分数设置详解)

本文深入解析Fluent欧拉模型在流化床模拟中的应用,重点讲解颗粒粘度和体积分数等关键参数的设置原理与科学方法。通过对比不同模型(如Syamlal-O'Brien、Gidaspow)的适用场景,帮助工程师摆脱参数死记硬背,实现精准模拟。内容涵盖相间作用机制、求解策略优化及结果验证,为化工、能源领域的流化床模拟提供实用指南。

weixin_42656416的博客 429

Android google map自定义图层

      在以前的电子商务项目中,需要在google地图中比较符合用户条件的酒店的位置以及添加相关的说明图层,只是调用google的js实现即可,现在在android开发中可以使用google 的android api实现。   keytool -list -alias androiddebugkey -keystore "C:\Documents and Settings\Administ...

topMan'blog 452

CSP - 2024 普及组初赛试题及解析

CSP - 2024 普及组初赛试题及解析

QD_Jason的博客 2910

Yocto开发讲解系列 - 总目录

Yocto开发讲解系列总纲Yocto开发专栏前言

fulinux的博客 3万+

android网络-GoogleMap之GPS定位

首先,获取MapAPIKey 1,获取android keystore位置 eclipse->window->preferences->android->build 在default debug keystore下找到android key的存储位置C:\Users\acer\.android\debug.keystore,备用。 2,用jdk提供的keytool为android keys

superjunjin的专栏 3787

YOLO26涨点改进 | 检测头Head创新改进篇 | 利用RFAConv感受野注意力卷积改进YOLO26检测头,RFAHead感受野注意力检测头,助力小目标检测高效涨点

YOLO26作为轻量化目标检测模型的新一代标杆,凭借高效的Backbone与Neck结构,在实时检测场景中表现突出,但原生检测头仍存在核心痛点——感受野固定、小目标特征感知薄弱、多尺度目标适配不足,导致在小目标密集、复杂背景遮挡等场景中漏检率偏高、定位精度不足。

qq_36130719的博客 168

Android GoogleMap suggestion AutoComplete (二)具体实现

在前一篇Android GoogleMap suggestion AutoComplete (一)申请API KEY中已经讲解过如何申请Key,现在主要来看实现,实现的效果如下: 这个API的URL格式为: URL =  https://maps.googleapis.com/maps/api/place/autocomplete/json?key=你申请的KEY&input=文本框输

z_y861107的博客 643

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

集成GoogleMap,实现定位和获取位置信息

自学android几个月,前几天粗略学习了下google地图集成,特地记录该文 1.准备 我使用的是AS2.2.2,首先翻墙注册google开发者帐号,准备获取API Key,网上有许多相关资料我就不再赘述,这里讲一个比较小白级的获取方法,可以减少许多输入 1.1. AS创建项目添加一个Google Map Activity 1.2 创建成功后找到google_maps_a

linyaodai的博客 3万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

android网络-GoogleMap之Json解析

Json解析相较其他解析方法来说,方法简单,效率较高 GoogleMap的Json源代码 { "results" : [ { "address_components" : [ { "long_name" : "滨江道", "short_name" : "滨江道",

superjunjin的专栏 2773

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

googlemap 安装到手机上!!!!

from: http://blog.csdn.net/whizkid01/article/details/7287252 最近在编写Google Map应用的过程中发现一个问题,在往手机上装应用的时候出现: Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY 错误。经过各种找资料才知道是我手机的ROM里吧共享

dylancao的专栏 1561

android创建googlemap基础教程和画导航线路图

GoogleMap android  API v2:https://developers.google.com/maps/documentation/android/start?hl=zh-CN 链接里是官方给出的向导,我只是照着模拟做了一遍,希望E文不好的同学可以通过本文获取一些地图开发知识,同时记录自己的心得,仅此而已。 一、添加GoogleMap 1,创建一个新的Project

其实并不难,是你太悲观 1万+

获取Android GoogleMap API V2密钥详解

公司有个Android项目要用到地图,之前用百度地图开发了一版,现在地图要改成Google的,就必须申请一个key,百度是中文说明,很快就申请了,但是Google是英文的说明,对于我们这些英盲来说,看起来很是蛋疼啊,网上也有介绍的,但是试了都不行,那就只能上“有道”自己解决了,经过不懈的努力,终于解决了,分享给需要的人! 1.首先的生成SHA1密钥(旧版好像是MD5); 生成方法: (1).

一鸣专栏 2401

map android 使用,android googleMap使用并在指定的位置下标注

android googleMap使用并在指定的位置上标注1.使用googleMap 项目必须使用google APIS2.必须申请keyprotected void onCreate(Bundle arg0) {super.onCreate(arg0);setContentView(R.layout.map);mapView = (MapView)findViewById(R.id.map);/...

weixin_31108679的博客 360

Android之googleMap(其二)

Android之googleMap(其二)  上文说到获取手机所在地的经纬度,那么有几种方式呢?通过GPS,network.而地位API中提供了LocationManager,以及Location。其中LocationManager用来获得位置服务,Location用来获取位置。具体代码如下: View Code private GeoPoint getGeoP

android大牛MrJing 活动中心 853

android 使用 googleMap

1.找到你的debug.keystore文件          在Eclipse工具下,选择windows-->Preference-->Android-->Build,其中Default debug keystore的值便是debug.keystore的路径了。 2.用keystore 文件获取 for getting the certificate fingerprint (MD5) 首

maoyxiong的专栏 985

【android学习之十六】——特色功能1:GoogleMap手机地图

声明:学习的书籍《Android应用开发揭秘》,这里记录学习该书籍的日志,引用的相关代码与总结描述,没有商业的用途,完全是自我学习的一个记录,刚刚学习不可避免会出现很多问题,若是有错误还请大家多多批评。一、GoogleMap手机地图             GoogleMap是我们平时在PC上找地址的一个重要工具,同样在android系统中,也提供了手机上得Map实现。 第一步、申请使用Andro

jercy的专栏 7038

GoogleMap开发-Android

GoogleMap开发-Android

Raleigh 1142
上一篇: GoogleMap----android篇(1)
下一篇: Plugin is too old gradle插件版本太低
cq_async
博客等级 码龄11年 5粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值