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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mysql存储过程菜鸟教程_mysql存储过程是什么

    mysql存储过程菜鸟教程_mysql存储过程是什么本文介绍关于在MySQL存储过程游标使用实例,包括简单游标使用与游标循环跳出等方法例1、一个简单存储过程游标实例DELIMITER$$DROPPROCEDUREIFEXISTSgetUserInfo$$CREATEPROCEDUREgetUserInfo(indate_daydatetime)—-实例–存储过程名为:getUserInfo–参数为:date_day…

    2022年10月1日
    4
  • 设置pycharm的python解释器_pycharm安装后无解释器

    设置pycharm的python解释器_pycharm安装后无解释器选择File->setting(快捷键ctrl+alt+s)弹出下图界面,选择左边红色圈,ProjectPython->ProjectInterpreter再单击右边设置图标弹出下图点击SystemInterpreter再点击右边方框,弹出路径选择框,选择安装的python.exe路径…

    2022年8月28日
    5
  • mysql 索引类型以及使用场景[通俗易懂]

    mysql 索引类型以及使用场景[通俗易懂] 关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。对于没有索引的表,单表查询可能几十万数据就是瓶颈,而通常大型网站单日就可能会产生几十万甚至几百万的数据,没有索引查询会变的非常缓慢。还是以WordPress来说,其多个数据表都会对经常被查询的字段添加索引,比如wp_comments表中针对5个字段设计了B…

    2022年6月7日
    39
  • java grouping,介绍 Java 8 groupingBy Collector

    java grouping,介绍 Java 8 groupingBy Collector介绍Java8groupingByCollector本文我们探讨下Java8groupingByCollector,通过不同的示例进行详细讲解。GroupingByCollectorJava8StreamAPI提供了声明方式处理流数据。static工厂方法Collectors.groupingBy()和Collectors.groupingByConcurrent()…

    2022年8月20日
    9
  • Esp8266 mqtt 步进电机远程控制窗帘

    Esp8266 mqtt 步进电机远程控制窗帘使用28BYJ-48步进电机esp8266-12f(或nodemcu)mqtt基于arduinoIDE开发实现通过mqtt发送指令给wifi模块进而控制电机,电机拖动窗帘打开或闭合效果演示地址:链接搭建模型如何制作电动窗帘,牛人给你解释它的原理参考这个视频搭建窗帘模型模型搭建很重要就算电机能够稳定控制但是模型搭建的不好窗帘的打开和关闭都会受到影响电机要粘牢固…

    2022年6月23日
    45
  • 字王2012·字王回文体系列,共15款,点击浏览·字体样张

    字王2012·字王回文体系列,共15款,点击浏览·字体样张

    2021年8月18日
    65

发表回复

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

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