精华内容
下载资源
问答
  • 仿GOOGLE地图简易地图引擎,将切版地图重新发布成一整张可缩放地图,同时有下载地图工具代码,如果地址无法下载可以到google官网上,按F12,分析其中的地址格式,修改后即可下载
  • 滴滴地图引擎演进

    2018-09-29 10:43:58
    滴滴出行历经6年发展,改变了人们的出行方式,使其智能化。地图引擎是滴滴出行的核心引擎,地图在交易过程中全程参与,本文档介绍了地图引擎的架构演迁过程。
  • 什么是地图引擎?它和地图软件有什么区别? 引擎一词是英文单词engine的音译,通常指发动机,就是动力输出设备。诸如汽车、轮船、飞机的动力提供的核心设备就是引擎。IT领域中,常听说的有搜索引擎、图形引擎等。...

    什么是地图引擎?它和地图软件有什么区别?

    引擎一词是英文单词engine的音译,通常指发动机,就是动力输出设备。诸如汽车、轮船、飞机的动力提供的核心设备就是引擎。IT领域中,常听说的有搜索引擎、图形引擎等。软件中引擎就是提供一套特定底层功能的实现和接口,其往往基础而强大,充分满足上层的应用需要。而通常说的地图引擎和导航引擎都属于GIS引擎的一部分。GIS引擎就像汽车的发动机,数据就像油料,只是这个发动机与油料是唯一对应的。

    地图引擎,从应用层层来看,就是一套提供了驱动和管理地理数据,实现渲染、查询等功能的一套函数库,所有的应用层软件只需要调用地图引擎提供的功能接口就能较容易的完成其功能。常见的地图引擎有Google Maps API、百度地图API、高德地图API、HereMap等。

    地图软件是架构在地图引擎之上的应用。地图软件可以没有独立的地图引擎,而在软件中实现地图引擎的功能,但独立的地图引擎可以使软件的架构更清晰,扩展性和可维护性都有极大的提升。尤其对于多平台的地图软件,独立的地图引擎必不可少,否则维护成本倍增。地图引擎通常会封装和保护地理数据的组织管理机制,对上层提供地图移动、放缩、渲染、空间查询等功能。

    通常,在移动GIS中,地图引擎还包括了导航引擎。导航引擎与地图引擎的概念一致,导航引擎驱动和管理是拓扑数据,提供的是路线和导引信息。导航引擎通常会封装和保护几何数据的拓扑关系和导引数据,对上层提供路线分析、拓扑分析、引导信息的功能。

    在GIS的架构的设计中,除了地图引擎和导航引擎外,有的设计者会把图形渲染单独分出来,封装成独立的渲染引擎,如2D渲染引擎、3D渲染引擎等。这样做没有任何问题,只要能和地图引擎很好的衔接,这样的设计是更好的。

    通常嵌入式上GIS引擎对其数据要求都是专有的,目的是提高引擎运行效率。各公司或各设计师的引擎设计会与引擎所需数据格式设计紧密衔接,其实通常都是同一团队在设计。这份数据格式设计是GIS引擎的核心技术之一,数据格式的优劣很大程度上决定到了引擎的效率,所以基本上没有公司或设计师会公开他们的设计方案,因为这是核心技术机密!所以,你要想在嵌入式设备上开发GIS引擎,就要设计自有的GIS数据格式。

    那么我们能不能就拿MapInfo的MIF或ArcInfo的E00数据做引擎的数据源?答案是肯定的,能!但是你将很难保障引擎的运行效率。通常一些完善的GIS引擎都会提供一些外围软件,其中就包括各个大厂交换格式导成自有GIS引擎格式数据的工具,这也是判定一个GIS引擎完整度的一个重要标志。

             

    转载于:https://www.cnblogs.com/yif1991/p/9488370.html

    展开全文
  • WebGL地图引擎架构和渲染核心设计|WebGL地图引擎系列第二期 作者:J前言今天这篇文章来聊聊 WebGL 地图引擎的架构及其渲染核心的设计。Web 地图产品在采用 WebGL 技术绘制前早已经有 DOM 实现和采用 Canvas2D 绘图...

    WebGL地图引擎架构和渲染核心设计|WebGL地图引擎系列第二期   作者:J

    前言



    今天这篇文章来聊聊 WebGL 地图引擎的架构及其渲染核心的设计。Web 地图产品在采用 WebGL 技术绘制前早已经有 DOM 实现和采用 Canvas2D 绘图技术实现的版本,因此这里不再详细描述整个地图引擎的架构,我们重点只看和 WebGL 相关的内容。


    从功能实现上看,WebGL 地图引擎需要以下部分

    1. 数据的请求、解析以及缓存的管理。

    2. WebGL 相关的 Shader、状态管理。

    3. WebGL 涉及的各种 Buffer、纹理对象的创建和管理。

    4. 不同类型的元素绘制。


    在架构设计时需要考虑以下这些因素

    1. 模块是解耦的。方便不同人共同协作开发。

    2. 高性能的。通过架构解决一些性能问题。

    3. 高效的。通过封装隐藏底层细节。


    当然,各个方面不可能完全达到最理想状态,因此需要根据项目特点进行权衡。


    WebGL 渲染引擎的架构

    总体架构如下所示:



    主要模块说明

    • Map 是地图引擎的核心类,表示地图本身。初始化时创建 Scene、LayerManager 和 OverlayManager 等管理器。


    • Scene 模块是地图的渲染核心逻辑,其中关键的作用是创建一个渲染循环,具体策略会在后面提到。


    • LayerManager 负责计算视野内所需要的网格数据,并通知每一个 Layer 加载数据。


    • Layer 通过 Worker 发送请求,Worker 收到数据后解析并返回,Worker 统一由 WorkerManager 管理。


    • Features 负责保存当前视野内的数据,负责绘制的 Painter 类从中获取数据进行绘制。只要约定好数据格式,请求、解析数据的工作与绘制工作可以完全解耦。在实际开发中,这两大部分也是由不同开发人员独立并行开发的。


    • Painter 还引用了一些和 WebGL 绘制相关的模块,主要有:WebGLProgram 负责管理 shader、Draw Utils 提供了各种类型的元素的绘制函数、TextureAtlas 负责动态纹理合并、Camera 负责视图矩阵运算。这些模块都对一些较为底层的计算或 WebGL 调用做了封装,以便提升开发效率。


    核心渲染逻辑

    Scene 模块实现了核心的渲染逻辑,该模块监听 Map 的各种状态变化的事件:

    • center_change:中心点变化触发此事件。


    • zoom_change:级别变化触发此事件。


    • heading_change:正北方向变化触发此事件。


    • tilt_change:倾斜角度变化触发此事件。


    Scene 收到事件后会启动一个动画循环,通过 requestAnimationFrame(下文简称rAF)实现,并保证只有一个 rAF 循环。rAF 循环启动后会在100ms后自动停止,直到下次再被启动。


    在有些 WebGL 教程中会创建一个永久运行的 rAF 来实现动画。例如在 Professional WebGL Programming (p223-p224) 一书中有这样的例子:

    function draw(currentTime) {
        // Request a new call to draw the next frame before you actually
        // start drawing the current frame.
        requestAnimationFrame(draw);
        // Update the position of the moving objects in your scene
     
        // Draw your scene
     
    }

    function startup() {
        // Do your usual setup and initialization     
        draw();
    }

     

    下面是 ThreeJS 文档中的一段代码:

    function render() {
        requestAnimationFrame(render);
        renderer.render(scene, camera);

    render();


    上述代码无一例外使用了 rAF 来处理 WebGL 动画,在绘制方法中使用 rAF 来重复调用自己,从而实现循环绘制。这样做有什么问题吗?首先这个循环会不停的循环往复,除非你的 3D 场景确实每时每刻都有物体在运动需要刷新,否则循环绘制重复的内容是一种浪费,尤其是在移动端,这样做会大大增加耗电量。其次,在 iOS 上,苹果不允许 APP 后台访问 OpenGL 相关的图形接口,否则会强制终结。所以当你的程序运行在 APP 中的某个 WebView 时,如果用户按了 HOME 健让 APP 切换到后台,这个 APP 很可能被系统终结掉。因此在实际开发中,渲染循环通常是按需启动,并自动停止的。对地图来说,只有用户操作地图或者通过接口调用才会导致地图发生状态的变化,否则地图是静止的,静止时也就没有必要再通过循环进行渲染。


    从另一个角度看 Map 派发事件可能会比较频繁,通过 rAF 方式可以把频繁的事件处理统一同步到 rAF 的每一帧处理当中:




    如上图所示,Scene 可能在任意时刻收到事件,但所有的绘制操作都放在 rAF 的每一帧里进行。不受事件派发的影响,这样保证了地图渲染的流畅性。这种策略同样可以运用在其他有用户频繁交互的界面上,以便提升界面动画的流畅性。



    展开全文
  • IGIS地图引擎3.1

    2009-04-15 18:16:26
    IGIS地图引擎3.1IGIS地图引擎3.1IGIS地图引擎3.1
  • 嵌入式开源地图引擎 将OpenStreeMap + TopoMap转换为栅格图像,以供具有有限资源的嵌入式设备使用。 重在制品。
  • Openlayer4 - 最好最强大的开源地图引擎# githubhttps://github.com/openlayers/openlayers# 官网http://openlayers.org/# APIhttp://openlayers.org/en/latest/apidoc/index.html# 中文教程...百度...

    Openlayer4 - 最好最强大的开源地图引擎

    # github

    https://github.com/openlayers/openlayers

    # 官网

    http://openlayers.org/

    # API

    http://openlayers.org/en/latest/apidoc/index.html

    # 中文教程

    http://weilin.me/ol3-primer/

    坐标可以在这里查询

    # 百度接口

    http://api.map.baidu.com/lbsapi/getpoint/index.html

    # openlayer 实现的deom

    http://openlayers.org/en/latest/examples/mouse-position.html

    npm install ol --save

    https://github.com/openlayers/openlayers/tree/master/package

    一些非demo的收集和备注

    # 加载地图时的进度条

    http://openlayers.org/en/latest/examples/tile-load-events.html

    demo 1 :

    清注意,这个demo中的大部分API都会在后续频繁使用的

    const ol = require('js/ol.js');

    require('css/ol.css');/**

    坐标可以在这里查询 :

    百度地图API : http://api.map.baidu.com/lbsapi/getpoint/index.html

    openlayer官方API : http://openlayers.org/en/latest/examples/mouse-position.html*/

    var map = newol.Map({

    layers: [newol.layer.Tile({

    source:newol.source.OSM()

    })

    ],

    target:'map',

    view:newol.View({

    projection:'EPSG:4326',//'EPSG:3857',

    center: [105.4265, 34.7782],

    zoom:5,

    minZoom:4,

    maxZoom:6})

    });

    demo2 : 结合jquery + bootstrap实现点击气泡

    http://openlayers.org/en/latest/examples/overlay.html

    核心知识点:map.on绑定click事件、获取当前地理位置参数。

    const ol = require('js/ol.js');

    const $= require("jquery"); if ( typeof window === "object") {window.jQuery =$;};

    require("bootstrap");

    require('css/ol.css');

    require('css/Overlay.css');var layer = newol.layer.Tile({

    source:newol.source.OSM()

    });var map = newol.Map({

    layers: [layer],

    target:'map',

    view:newol.View({

    center: [0, 0],

    zoom:2})

    });var pos = ol.proj.fromLonLat([16.3725, 48.208889]);//Vienna marker

    var marker = newol.Overlay({

    position: pos,

    positioning:'center-center',

    element: document.getElementById('marker'),

    stopEvent:false});

    map.addOverlay(marker);//Vienna label

    var vienna = newol.Overlay({

    position: pos,

    element: document.getElementById('vienna')

    });

    map.addOverlay(vienna);//Popup showing the position the user clicked

    var popup = newol.Overlay({

    element: document.getElementById('popup')

    });

    map.addOverlay(popup);

    map.on('click', function(evt) {var element =popup.getElement();var coordinate =evt.coordinate;var hdms =ol.coordinate.toStringHDMS(ol.proj.transform(

    coordinate,'EPSG:3857', 'EPSG:4326'));

    $(element).popover('destroy');

    popup.setPosition(coordinate);//the keys are quoted to prevent renaming in ADVANCED mode.

    $(element).popover({'placement': 'top','animation': false,'html': true,'content': '

    The location you clicked was:

    ' + hdms + ''});

    $(element).popover('show');

    });

    View Code

    demo3 : 设置边界线

    const ol = require('js/ol.js');

    require('css/ol.css');newol.Map({

    layers: [new ol.layer.Tile({source: newol.source.OSM()})

    ],

    view:newol.View({//设置地图中心范围

    extent: [102, 29, 104, 31],//设置成都为地图中心

    center: [104.06, 30.67],

    projection:'EPSG:4326',

    zoom:10}),

    target:'map'});

    demo 4 :绘制线条

    实现该效果需要第三方插件的支持

    html:

    OpenLayers

    #map{width:100%;height:100vh;

    }

    展开全文
  • 什么是地图引擎和导航引擎

    万次阅读 2016-12-04 21:45:43
    总有人问我这个问题,什么是地图引擎和导航引擎?它和地图软件或导航软件有啥区别?我也总是翻来覆去的解释,有些时候还真不好说明白。现在提笔回答这个问题,嗯,我得斟酌下。  引擎一词是英文单词engine的音译,...

    总有人问我这个问题,什么是地图引擎和导航引擎?它和地图软件或导航软件有啥区别?我也总是翻来覆去的解释,有些时候还真不好说明白。现在提笔回答这个问题,嗯,我得斟酌下。

        引擎一词是英文单词engine的音译,通常指发动机,就是动力输出设备。诸如汽车、轮船、飞机的动力提供核心设备就是引擎。IT领域中,常听说的有搜索引擎、图形引擎等。软件中引擎就是提供一套特定底层功能的实现和接口,其往往基础而强大,充分满足上层的应用需要。

       (1)引擎简介

        地图引擎,从应用层层来看,就是一套提供了驱动和管理地理数据,实现渲染、查询等功能的一套函数库,所有的应用层软件只需要调用地图引擎提供的功能接口就能较容易的完成其功能。导航引擎与地图引擎的概念一致,导航引擎驱动和管理是拓扑数据,提供的是路线和导引信息。

        简单的说,地图软件是架构在地图引擎之上的应用。地图软件可以没有独立的地图引擎,而在软件中实现地图引擎的功能,但独立的地图引擎可以使软件的架构更清晰,扩展性和可维护性都有极大的提升。尤其对于多平台的地图软件,独立的地图引擎必不可少,否则维护成本倍增。

        地图引擎通常会封装和保护地理数据的组织管理机制,对上层提供地图移动、放缩、渲染、空间查询等功能。

        导航引擎通常会封装和保护几何数据的拓扑关系和导引数据,对上层提供路线分析、拓扑分析、引导信息的功能。 

        在GIS的架构的设计中,除了地图引擎和导航引擎外,有的设计者会把图形渲染单独分出来,封装成独立的渲染引擎,如2D渲染引擎、3D渲染引擎等。这样做没有任何问题,只要能和地图引擎很好的衔接,这样的设计是更好的。


    (2)引擎与数据

        地图引擎和导航引擎都属于GIS引擎的一部分,下文中统称GIS引擎。

        GIS引擎就像汽车的发动机,数据就像油料,只是这个发动机与油料是唯一对应的。通常嵌入式上GIS引擎对其数据要求都是专有的,目的是提高引擎运行效率。各公司或各设计师的引擎设计会于引擎所需数据格式设计紧密衔接,其实通常都是同一团队在设计。这份数据格式设计是GIS引擎的核心技术之一,数据格式的优劣很大程度上决定到了引擎的效率,所以基本上没有公司或设计师会公开他们的设计方案,因为这是核心技术机密!

        那么我们能不能就拿MapInfo的MIF或ArcInfo的E00数据做引擎的数据源?答案是肯定的,能!但是你将很难保障引擎的运行效率。通常一些完善的GIS引擎都会提供一些外围软件,其中就包括各个大厂交换格式导成自有GIS引擎格式数据的工具,这也是判定一个GIS引擎完整度的一个重要标志。

        所以,你要想在嵌入式设备上开发GIS引擎,就要设计自有的GIS数据格式。记住一点,几何数据不要线性存储,线性存储的访问效率低下。高效访问的数据存储格式设计要点,会在后续的文章中进行介绍。

    原文链接:http://blog.sina.com.cn/s/blog_ae26c0810101740j.html

    展开全文
  • 开源地图引擎开源协议地图引擎对比数据获取时间 2020-8-10name-mapleafletopenlayermapbox-glcesium周下载量3740149950735228916903github star28.6k7.3k6.2k6k开源协议BSDBSD见下图Apache-2.0特点轻量扩展性高基于...
  • 地图引擎,以后做地图方面的应用就方便了。和大家分享交流
  • 开源的地图引擎代码

    2012-07-17 10:09:43
    开源的地图引擎代码, C++(vs2005)
  • mapx地图引擎及其示例代码
  • 近期需要做一个地图的APP,不基于经纬度,需要显示详细的供水管线以及建筑物等,有什么可以用的开源地图引擎吗?求推荐
  • 我是个自由职业者, 4 年前因为接了个地图外包项目, 因缘际会开始自己造轮子写引擎, 没想到一写就是 4 年 : P项目地址是:项目是一个 HTML5 的地图引擎, 基于原生 ES6 Javascript 开发:二三维一体化...
  • 二维地图引擎

    千次阅读 2017-12-13 09:57:36
    2014.7.14,以C++语言技能作为生产力入职开始第一份工作,主要职责参与地图引擎研发及维护。起初在老大的指导下熟悉引擎(MapEngine)中各个功能模块的执行流并据需求完成功能上的扩充。后来项目需求,改造Ma
  • 该资源包含有gmapx.ocx插件式离线地图引擎,和离线地图引擎使用的示例源代码。该组件是mapx的完美替代品。具有高效,快速,方便构建自己地图服务产品的作用。
  • WinCe 地图引擎 加速 GAPI 10倍
  • 地图引擎 - OSMDroid

    2016-02-16 16:52:17
    OSMDroid是一款基于Android的模块化地图引擎,如果你觉得Android内置的Mapview 类不能满足项目的要求,那么可以试试OSMDroid。它是完全模块化的,可以让你的Android应用程序更加灵活可控。OSMDroid支持在线和离线...
  • 最近几年一直从事地图方面的工作,自主研发了WPF和Winform两个版本瓦片地图引擎。轻量级、不依赖第三库。先上一张图片展示一下吧! 产品包括服务端和客户端两部份: 1、服务端主要地图图层配制和空间计算等,...
  • 引言二维、三维地图的底图一般都是用图片切片(瓦片),将大的影像数据,或是矢量配色好的图层集合,通过工具,切成地图切片,以文件...切片数据可以直接按照目录发布,也可发布成tms、wmts服务,开源的二维地图引擎l...
  • 历时两个星期,我们对地图功能代码采用面向对象方式进行重构(为了适应多地图引擎,重构是值得的),目前完美的将百度地图集成到了插件中,与原先的高德地图组成了双地图引擎,丰富软件的功能外,提升了软件的整体...
  • 手机地图引擎

    2009-09-26 13:52:00
    手机地图引擎经过多年的努力,我们开发出了具有自主知识产权的手机地图引擎,在几项关键技术上,已经走在同行业的前列.望多交流合作! 移动GIS 南京跬步科技有限公司http://www.creable.cn最后附一张,内存占用的测试图,...
  • 学校探索 School Quest是一款带有集成图块地图引擎的school-sim RPG。 在Google Play上可用: : 官方网站: : 查看样本资源,以了解如何格式化资源。 如有任何疑问,请联系
  • 使用python搭建本地地图引擎(一)前言简介安装最后 前言 地图作为一个辅助工具,几乎每个软件产品直接或间接的多少都会接触到,市场上我们常用的地图工具都是大厂出产基本都有已经趋于稳定的接口以及标准简单的操作...
  • 高性能计算与矢量地图引擎 高性能计算(HighPerformanceComputing)是计算机科学的一个分支,主要是指从体系结构、并行算法和软件优化等方面研究开发高性能计算技术。多核是基础,同构和异构是不同的方式,neon、GPU也...
  • 关于地图引擎的实时渲染的书,从到到尾解释,比较不错。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,081
精华内容 1,632
热门标签
关键字:

地图引擎