之前讲过了如何在Ionic2中使用第三方库,因为第三方库必须针对TypeScript提供相应的声明文件——即d.ts文件,才能被TypeScript正确识别并编译。好在大多数的第三方库已经有了定义文件,可直接通过以下命令安装:

npm install @types/theLibraryName --save

这样就可以解决大多数第三方库的引入问题,如上一篇博客中提到的ECharts组件。

那么如果某个第三方库没有对应的d.ts怎么办呢?除了自己手写d.ts之外,TypeScript也提供了一种比较宽泛的方式来识别js代码中的变量及方法,但是缺点是失去了智能感知的特性。比如要使用高德地图的SDK,经查看高德地图的文档:http://lbs.amap.com/api/javascript-api/summary/ ,发现使用方法是这样的:

第一步,注册高德开发者;第二步,去控制台创建应用;第三步,获取Key。

接下来需要引入高德地图SDK的JS:

<script type="text/javascript" src="http://webapi.amap.com/maps?v=1.3&key=您申请的key值"></script>

这个js是动态加载的,npm中也没有对应的d.ts,如果按照文档下面的步骤直接使用AMap对象,就会编译失败,找不到这个对象。所以在使用AMap之前,必须声明它。下面演示一下在Ionic2中使用高德地图SDK的方法。

一、新建Ionic2应用并引入高德JS

首先新建一个Ionic2应用。使用以下命令来创建一个新项目:

ionic start MapDemo --v2

打开src目录下的index.html, 在head标签中添加以下代码,引入js:

<script type="text/javascript" src="http://webapi.amap.com/maps?v=1.3&key=您申请的key值"></script>

注意,该js必须放在以下代码的前面:

<script src="build/main.js"></script>

不然在使用的时候还没找到AMap对象,还是会报错。

二、创建地图容器

打开home.html,在home页面里你想展示地图的地方创建一个div 容器,并指定id标识:

<div id="container"></div> 

给地图容器指定大小,可以使用CSS为地图容器设置合适的大小,比如:

#container {width:300px; height: 180px; }

也可以直接写:

<div id="container" style="height: 600px;"></div>

三、声明AMap对象并创建地图

打开home.ts,在构造函数前添加一个变量:

public map: any;

TypeScript中any真是个很有用又没那么好用的东西,任何不知道具体类型的东西都可以声明为any类型,但是这样就失去了智能感知的特点。没办法这里只能声明为any了。接下来添加一个loadMap方法:

loadMap() {
this.map = new AMap.Map('container', {
resizeEnable: true,
zoom: 8,
center: [116.39,39.9]
});
}

并调用该方法:

ionViewDidLoad() {
this.loadMap();
}

如果这时候编译的话,就会报错,找不到AMap对象,TypeScript不认识这个东西。所以需要对其进行声明。

打开src目录下的declarations.d.ts文件,这里就是写类型定义的地方,里面有一段注释,大意如下:

声明文件是TypeScript编译器如何知道一个对象的类型的方式。它们将让TypeScript认识所有的代码并提供智能感知。

下面声明的通配符* 模块允许在App中使用第三方库,即使它们没有提供类型声明文件。

我们可以把高德JS的声明写在这里。在下面添加以下代码:

declare var AMap;

即可正常显示地图了:

Ionic2系列——在Ionic2中使用高德地图的更多相关文章

  1. Vue-Cli 3.0 中配置高德地图

    vue 中使用高德地图有两种方式 一.vue-amap 组件 官网: https://elemefe.github.io/vue-amap/#/ 开始的时候是打算用这个组件做地图功能的,但是尝试之后存 ...

  2. Vue组件篇——Vue3.0中使用高德地图

    VUE-CLI 3.0 中配置高德地图 在项目开发中,地图组件 1.首先,需要注册高德开放平台的账号,并在[应用管理]页面[创建新应用],为应用添加Key值 高德开放平台:https://lbs.am ...

  3. reactjs中使用高德地图计算两个经纬度之间的距离

    第一步下载依赖 npm install --save react-amap 第二步,在组件中使用 import React, { Component } from 'react' import { L ...

  4. react中使用高德地图的原生API

    干货,无话 1.react-create-app,创建新react项目 2.npm install react-amap,引入高德地图的封装 3.编写组件index.js import React f ...

  5. vue-cli2.X中引入高德地图,将其设为全局对象

    平时一般未用脚手架构建或用webpack构建的项目只要用script标签引入即可,在vue-cli 2.X构建的项目中,需要用如下方式引入高德地图: 首先在高德地图开放平台中注册开发者账号并获取key ...

  6. 在vue中使用高德地图vue-amap

    1.安装 vue-amap我安装指定版本0.5.10的版本 npm i --save vue-amap@0.5.10 2.main.js中的配置 key申请地址教程:https://lbs.amap. ...

  7. 在vue中使用高德地图开发,以及AMap的引入?

    百度引入BMap ,一个import 即可,可AMap 却报AMap is not difined ? 1.首先在 externals: { "BMap": "BMap& ...

  8. Ionic2系列——在Ionic2中使用ECharts

    在群里看到有人问怎么在Ionic2中集成ECharts来显示图表.当时答应说写个blog,简单写下步骤. 在TypeScript中如果要使用第三方库,必须要有d.ts,也就是定义文件,没有这个文件的话 ...

  9. android: 在APP中显示高德地图SDK

    一.搭建环境 参考资料:http://lbs.amap.com/api/android-sdk/guide/create-project/android-studio-create-project  ...

随机推荐

  1. 自己写CPU第九阶段(5)——实现负载存储指令2(改变运行阶段)

    我们会继续上传新书<自己动手写CPU>.今天是第42篇.我尽量每周四篇,可是近期已经非常久没有实现这个目标了,一直都有事.不好意思哈. 开展晒书评送书活动,在q=%E4%BA%9A%E9% ...

  2. ssh常用用法小结

    ssh常用用法小结 1.连接到远程主机: 命令格式 : ssh name@remoteserver 或者 ssh remoteserver -l name 说明:以上两种方式都可以远程登录到远程主机, ...

  3. 一道sql面试题(查询语句)

    一道sql面试题(查询语句)   id name age 1  a        11 2  b        11 3  c        12 4  d        13 5  e        ...

  4. ASP.NET WebApi 入门

    今天参照微软官方(http://www.asp.net)学习了WebApi,在这里摘录如下: 前言 HTTP 不只是为了生成 web 页面.它也是一个强大的平台,可以建设公开服务和数据的 Api.HT ...

  5. Linq无聊练习系列6--Any/All/Contains/Concat/Union/Intersect/Except/take/skip/SqlMethods操作练习

    /*********************Any/All/Contains/Concat/Union/Intersect/Except/take/skip/SqlMethods操作练习******* ...

  6. C#大牛应该知道的一些知识

    任何一个使用.NET的人 描述线程与进程的区别? 什么是Windows服务,它的生命周期与标准的EXE程序有什么不同 Windows上的单个进程所能访问的最大内存量是多少?它与系统的最大虚拟内存一样吗 ...

  7. Stream使用教程

    现在,计算机CPU运行速度的快速发展已经远远超过了内存的访问速度.越来越多的程序性能被内存带宽所限制,而不是计算机的CPU运行速率. Stream benchmark是一个简单的合成基准测试程序,衡量 ...

  8. WebLogic使用SSH架构部署遇到org.hibernate.hql.internal.ast.HqlTok

    其实这个问题在以前就遇到过,当时解决了,但今天在部署一个测试轻应用的时候一直没有想起来,特此记录一下. 这个问题出现在使用WebLogic(我使用的是10.3.5版本)发布SSH架构的应用.在操作数据 ...

  9. asp.net缓存(转载)

    由于工作的需要,最近对.net缓存做了相关了解和学习.做以下分类: 客户端缓存 第三方的缓存 服务器缓存 客户端缓存 客户端缓存主要是指浏览器帮我们缓存一些页面组件包括脚本,样式,图片等等,由于客户端 ...

  10. 实现了一个简单的key-value存储系统

    实现了一个简单的key-value存储系统 源码下载: kvfs.rar 正文: 所谓的Key-Value就是每次存储一个数据时,是根据Key进行索引存储的.为了实现Key的快速查找功能,我使用了B- ...