Google 离线地图_谷歌地图离线包下载手机版

Google 离线地图_谷歌地图离线包下载手机版google离线地图展示和渲染由于项目的需要,在线地图无法满足业务需要,于是要做离线地图。经过一段时间的调研,最后选择了谷歌离线地图原因是通过现成的工具便可完成。感谢前人栽的树,在此整理总结。以下内容和代码是调研时准备的,仅供参考使用。离线地图制作技术:googlemapapi准备:googlemapapiv3离线版,地图切图工具,Google_Maps_API

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

google离线地图展示和渲染

由于项目的需要,在线地图无法满足业务需要,于是要做离线地图。经过一段时间的调研,最后选择了谷歌离线地图

原因是通过现成的工具便可完成。感谢前人栽的树,在此整理总结。

以下内容和代码是调研时准备的,仅供参考使用。

离线地图制作
技术:google map api
准备:google map api v3 离线版,地图切图工具,Google_Maps_API_V3文档和Google_Maps_JavaScript_API_V3_自用版本文档

google地图瓦片下载工具:http://download.csdn.net/detail/qq_19558705/9389057

google演示代码:http://download.csdn.net/detail/qq_19558705/9389076

离线地图的加载:
打开加载离线地图页面offlineMap.html

加载本地地图的函数:

function LocalMapType() {}
      
    LocalMapType.prototype.tileSize = new google.maps.Size(256, 256);
    LocalMapType.prototype.maxZoom = 13;  // 地图显示最大级别
    LocalMapType.prototype.minZoom = 9;   // 地图显示最小级别
    LocalMapType.prototype.name = "本地"; // 本地按钮,就是离线地图
    LocalMapType.prototype.alt = "显示本地地图";  // 显示本地地图可能会出现不清晰的现象
    LocalMapType.prototype.getTile = function(coord, zoom, ownerDocument) {
    var img = ownerDocument.createElement("img");    
    img.style.width = this.tileSize.width + "px";
    img.style.height = this.tileSize.height + "px";
    
    // 访问本地图片的算法,不同的地图切图工具对应的算法不同
    var strURL = "gmap/tiles/" + zoom + "/" + coord.x + "/" + coord.y + ".png"; 
    img.src = strURL;
    return img;
    };
    
    var localMapType = new LocalMapType(); 


初始化地图函数:

function initialize() {
    // 以该经纬度为中心居中显示,注意google 一般先写纬度,在写经度
    var myLatlng = new google.maps.LatLng(30.51667,114.31667); 
    var myOptions = {
      center: myLatlng,
      zoom: 10,        // 初始化地图默认级别
      streetViewControl: false,     // 默认不显示全景图
      mapTypeControlOptions: {
        mapTypeIds: ["local", google.maps.MapTypeId.ROADMAP] // 地图类型为普通街道地图
        }
    };
    
    var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);
    map.mapTypes.set('local', localMapType);
    map.setMapTypeId('local');
    // 设置地图瓦片大小为256*256
    map.overlayMapTypes.insertAt(0, new CoordMapType(new google.maps.Size(256, 256)));


html代码:

<body οnlοad="initialize()">
    <div id="map_canvas" style="width: 80%; height: 630px;"></div>
</body>

好像只能在body中写οnlοad=”initialize()” 函数。笔者打算用sitemesh整合离线地图页面时出现了问题,就是因为该函数只能在body中写,在div或者其他标签中不生效。若有其他办法解决请赐教。

以上便可以加载离线地图
如果需要修改显示的离线地图,一般只需要修改一下内容即可
LocalMapType函数中的 LocalMapType.prototype.maxZoom,LocalMapType.prototype.minZoom, strURL,
initialize函数中的 myLatlng,zoom

离线地图源的制作:
打开GoogleMap切图工具文件->GoogleTileDownload->修改conf.properties文件
修改的内容:
zoom=2 : 地图显示的等级
leftTopLnglat=114, 31 : 地图左上角经纬度
rightBottomLnglat=115, 30 : 地图右下角经纬度
具体方法看google离线地图下载工具中的readme.txt文件。该工具生产的地图源图片的规律满足上面的strURL的加载算法

在离线的情况下渲染离线地图:
1.加载图片:

var image = 'icon/0.png'; // 存放图片的路径
    var myLatLng = new google.maps.LatLng(30.51667,114.31667); // 图片显示的地方
    var beachMarker = new google.maps.Marker({
    position: myLatLng,
    map: map,
    icon: image
});



2.画折线:

var flightPlanCoordinates = [
    new google.maps.LatLng(30.51667,114.31667),
    new google.maps.LatLng(30.50667,114.32667),
    new google.maps.LatLng(30.40667,114.30667)
    ];
    var flightPath = new google.maps.Polyline({
       path: flightPlanCoordinates,
       strokeColor: "#FF0000",
       strokeOpacity: 1.0,
       strokeWeight: 2
    });
     
    flightPath.setMap(map); // 如果想还原去掉折线用:flightMap.setMap(null)

3.画圆:

 var citymap = {};  
    citymap['chicago'] = {  
    center: new google.maps.LatLng(31.18439, 121.49454),  
    population: 284259 
    }; 
    citymap['newyork'] = {  
    center: new google.maps.LatLng(31.38439, 121.52454),  
    population: 814319 
    };
    var cityCircle;

    for (var city in citymap) {  
    var populationOptions = {  
      strokeColor: "#FF0000",  
      strokeOpacity: 0.8,  
      strokeWeight: 1,  
      fillColor: "#FF0000",  
      fillOpacity: 0.35,  
      map: map,  
      center: citymap[city].center,  
      radius: citymap[city].population / 1000  
    };  
    cityCircle = new google.maps.Circle(populationOptions);  
    }


4.画多边形:

// 如果是多边形,最后一个点不需要写成第一个点就可以自动连起来
     var triangleCoords = [  
     new google.maps.LatLng(30.51667,114.31667),
         new google.maps.LatLng(30.50667,114.42667),
         new google.maps.LatLng(30.40667,114.30667)
    ];  
      
    bermudaTriangle = new google.maps.Polygon({  
        paths: triangleCoords,  
        strokeColor: "#FF0000",  
        strokeOpacity: 0.8,  
        strokeWeight: 2,  
        fillColor: "#FF0000",  
        fillOpacity: 0.35  
    });  
      
    bermudaTriangle.setMap(map); 


以上便是我项目中用到的内容,仅供参考。若有不对的地方,或者更好的方法。请指出。转载请注明来源:http://blog.csdn.net/qq_19558705

个人主页:http://www.itit123.cn/ 更多干货等你来拿

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/191611.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ODS简介_医学ods是什么意思

    ODS简介_医学ods是什么意思什么是ODS操作数据存储ODS(OperationalDataStore)是数据仓库体系结构中的一个可选部分,由业务系统产生的报表、细节数据的查询自然能够从ODS中进行,从而降低业务系统的查询压力。ODS设计与DW设计在着眼点上有所不同,ODS重点考虑业务系统数据是什么样子的,关系如何,在业务流程处理的哪个环节,以及数据抽取接口等问题。ODS是一个将面向主题的,动态增长的,非实时的,消除了原

    2022年9月26日
    0
  • 编程小白的博客日记[通俗易懂]

    编程小白的博客日记[通俗易懂]编程小白的博客日记2018-11-9星期五晴最近放假,一天下来好像什么都没干,不过今天去看了《毒液》,还是非常好看的,最皮我毒液!今天在网上看到一篇文章,是关于在python中使用you-get来下载网上的视频和音乐之类的,先打开cmd安装you-get,之后再打开一个cmd,输入you-get-o地址,然后就能下载视频了,不过如果这个视频在原…

    2022年6月9日
    30
  • 线程与进程,你真得理解了吗

    线程与进程,你真得理解了吗相信大家面试时一定没少被一个问题刁难,那就是进程和线程的区别是什么?这个问题延申开来并不像表面那么简单,今天就来深入一探。开始前先看一组非常传神的图例,相信可以帮助你更好理解进程与线程的概念:1进程与线程的关系和区别什么是进程进程可以说是一个“执行中的程序”。程序是指令、数据及其组织形式的描述,是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。进程有哪些特征?进程依赖于程序运行而存在,进程是动态的,程序是静态的;进程是操作系统进行

    2022年7月25日
    4
  • 如何在select标签中使用a标签跳转页面

    如何在select标签中使用a标签跳转页面

    2021年11月3日
    37
  • navicat激活码mac【2021免费激活】

    (navicat激活码mac)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月27日
    459
  • JavaScript Array(数组)清空[通俗易懂]

    JavaScript Array(数组)清空[通俗易懂]JavaScriptArray(数组)清空可采用三种方式:假设有数组:vara=[1,2,3];1、将长度属性置0。该方式最快捷a.length=0;2、使用splice移除a.splice(0,a.length);3、新建一个数组a=[];该方法可能会导致内存泄漏,最好能显式删除对象。

    2022年7月13日
    12

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号