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


相关推荐

  • pycharm设置打不开怎么回事_pycharm界面设置

    pycharm设置打不开怎么回事_pycharm界面设置害,pycharm专业版到期了,不能再用了,下了一个社区版,想要编译程序的时候发现没有解释器。解决方法找到设置(右上角,小齿轮)找到项目的Pythoninterpreter设置,点击小齿轮添加新的解释器。选择添加新的interpreter选择对应版本的Python即可。点确定就设置好了。…

    2022年8月26日
    5
  • SpringCloud详细教程(上)

    SpringCloud详细教程(上)SpringCloud详细教程,SpringCloud详细教程。SpringCloud是一系列框架的有序集合。如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用SpringBoot的开发风格做到一键启动和部署。本文主要介绍了SpringCloud的核心组件以及如何基于SpringCloud构建微服务。

    2022年5月24日
    39
  • c语言循环中按键跳出,C语言跳出循环

    c语言循环中按键跳出,C语言跳出循环C语言跳出循环C语言在程序员中备受青睐,成为最近25年使用最为广泛的编程语言。那么大家知道C语言跳出循环是怎么回事呢?下面一起来看看!使用while或for循环时,如果想提前结束循环(在不满足结束条件的情况下结束循环),可以使用break或continue关键字。break关键字在《C语言switch语句》一节中,我们讲到了break,用它来跳出switch语句。当break关键字用于w…

    2022年5月4日
    105
  • java删除文件目录及文件_Java删除文件,目录

    java删除文件目录及文件_Java删除文件,目录java删除文件目录及文件TodaywewilllookintoJavadeletefileandjavadeletedirectoryexamples.Earlierwelearnedhowtocreateafileinjava.今天,我们将研究Java删除文件和Java删除目录示例。之前我们学习了如何在java中创建文件。Java删除文件…

    2022年6月6日
    91
  • idea 2021.4.14激活码在线生成_通用破解码

    idea 2021.4.14激活码在线生成_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    111
  • 手把手教你制作一个简单的聊天机器人(图灵api)「建议收藏」

    手把手教你制作一个简单的聊天机器人(图灵api)「建议收藏」前言:在无聊的时候打打游戏、听听歌还不如来找个人来陪你聊天,今天来教大家制作一个聊天机器人,这样就不会无聊了,在线聊天机器人地址借愁哥哥机器人(可能有点丑,大家将就一下(????))这个接口就目前的一天100次聊天机会,大家要珍惜哦,源码在文章末尾哦!效果图:目录:一.准备工作二.项目开始1.页面布局:2.样式层:3.逻辑实现:一.准备工作通过分析我们需要以下的具体准备:对于界面的分析,我们需要用到的插件:jQuery,我们采用的是flex弹性布局,既然使用的是图灵机器人

    2022年7月18日
    24

发表回复

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

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