项目整理——mobile gis 基于Ionic框架(Angular)的hybrid移动应用

本文档介绍了如何使用Ionic(Angular)框架构建一个混合移动应用,专注于mobile GIS功能,包括地图展示、定位、导航和文件上传。通过集成Google Maps API,实现了地图定位、路径搜索、周围设施查询等功能。前端采用HTML、TypeScript,后端使用PHP和MySQL。
摘要由CSDN通过智能技术生成

概述

  1. 基于Ionic框架(Angular)开发hybrid移动应用,主要功能有地图要素展示、定位、导航、文件上传。
  2. 用户可查看或上传野生动物受伤地点,以及查看用户周围的援助设施(如警局、医院等)并查询路线
  3. 前端:HTML, Typescript结合Ionic框架(Angular),利用Google Map API对用户位置进行定位以及导航
  4. 后端:php, MySQL数据库

代码

app.module.ts

在每个子页面ts中import的module都要在app.module.ts中import并写入@NgModule中

import {
    FormsModule,ReactiveFormsModule } from '@angular/forms';

@NgModule({
   
  declarations: [AppComponent,SettingModalPage,ModalMapPage],
  entryComponents: [SettingModalPage,ModalMapPage],
  imports: [
    FormsModule,
    ReactiveFormsModule],
})

页面路由

  1. app-routing.module.ts中的Routes对象(Route对象被Angular抽象成一个接口,多个Route对象组成的数组用Route表示,注意跟Router: class区分)定义了路由的路径属性。
    用ionic generate page生成一个新的页面,就会在这里自动新增一个Route对象
    在这里插入图片描述
  2. app.component.html中的<ion-router-outlet>标签是页面中路由的出口。Router动态创建对应的组件,插入到<ion-router-outlet>标签中
    在这里插入图片描述
  3. 导航栏是tabs文件夹下的内容
    tabs.router.module.ts的Routes对象指定tabs导航栏怎么跳转到其他页面。所有子页面的Route对象都是tabs这一Route对象的子对象,即在其children数组内。
    用ionic generate page生成一个新的页面,要在这里创建对应的Route对象,即完成了一个页面的路由导航
    在这里插入图片描述
    tabs.page.html是导航栏的布局模板,在这里修改页面中标签的名称
    在这里插入图片描述
    在这里插入图片描述

创建search页面的地理定位(tab2)

关键:

  • 调用geolocation插件,获取定位
  • 函数的异步调用
  • 插值{ {}}的使用

调用geolocation插件,获取定位

  1. 安装插件
    在这里插入图片描述
    在这里插入图片描述
  2. import模块
    src/app/app.module.ts.
    在这里插入图片描述
  3. 在子页面ts文件中import地理模块,在类的构造函数中声明geolocation
    在这里插入图片描述
  4. 在类中声明变量
    在这里插入图片描述

函数的异步调用

  1. 在类中声明方法findCurrentLocation(),用于获取定位。里面的then是异步调用,如果position成功返回则调用第一个箭头后的,如果失败则返回error,调用第二个箭头后的。
    在这里插入图片描述

  2. 在类的constructor中调用findCurrentLocation()
    在这里插入图片描述

插值{ {}}的使用

  1. 在子页面的模板中(src/app/tab2/tab2.page.html)用插值({ {}})把ts中生成的值绑定在页面
    在这里插入图片描述
  2. 最后得到页面
    在这里插入图片描述

创建定位地图页(map)

关键:

  • 导入Router模块,导航到另一个页面和传参
  • 使用ngOnInit()定义初始化函数
  • 调用google map api创建地图
  1. 生成地图页
    在这里插入图片描述

导入Router服务,导航到另一个页面和传参

  1. import中导入,并在constructor中进行依赖注入Router服务
    在这里插入图片描述

  2. 在tab2.page.ts中定义页面跳转函数goToMapPage(),在函数内部先调用findCurrentLocation()来获取当前坐标。
    在这里插入图片描述

  3. 在goToMapPage()调用**router.navigate()**方法导航到地图页面,添加一个 NavigationExtras (interface)对象,设置queryParams参数,并把这个页面获取到的坐标经纬度传给地图页面。
    在这里插入图片描述

  4. 在src/tab2/tab2.page.html中创建按钮绑定事件函数goToMapPage()
    在这里插入图片描述

  5. 在src/index.html中插入Google Maps JavaScript API的脚本,用于地图页面调用google的api
    在这里插入图片描述

  6. 在src/app/map/map.page.html中创建地图画布,src/app/map/map.page.scss中设置画布样式
    在这里插入图片描述
    在这里插入图片描述

  7. src/pages/map/map.page.ts中声明变量google
    在这里插入图片描述

  8. 在类中声明变量,其中变量mapElement来自html,用@ViewChild(属性装饰器,用于配置一个视图查询,类似getElementById)获取,设为ElementRef类(对视图中某个原生元素的包装器。)。
    在这里插入图片描述

  9. map.page.ts中导入,并注入依赖的服务ActivatedRoute(包含与当前组件相关的路由信息。)
    在这里插入图片描述

使用ngOnInit()定义初始化函数
  1. ActivatedRoute对象(interface)的queryParams参数获取tab2传来的参数。参数在传输过程转为字符串,要用**Number()**转为数值。
    **ngOnInit()**中设置表示组件一初始化就获取参数。
    在这里插入图片描述

调用google map api创建地图

  1. 定义loadMap()函数,用于调用Google API的google.maps.LatLng生成地图坐标,google.maps.Map(mapElement[, opts]) 创建地图,google.maps.Marker([opts])生成弹出窗口
    在这里插入图片描述
    创建google.maps.Geocoder对象,用 geocode(request, callback) 方法把坐标转为地址(reverse geocode),显示在弹出窗口
    在这里插入图片描述
  2. ngOnInit()中调用loadMap(),表示一初始化完成就生成地图
    在这里插入图片描述
  3. 最后结果(点击得到弹窗)
    在这里插入图片描述

创建搜索路径页面(setting-modal)

用NavParams, ModalController在页面内的窗口传参

  1. tab2.page.ts中import导入,并在constructor依赖注入ModalController (Ionic的内容窗格类,在本页面生成的一个窗口,通常用于做选项设置)

  2. 异步创建一个modalController窗口,在关闭时获取子页面的数据

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值