HarmonyOS鸿蒙Next中实现简单旅游应用示例代码

发布于 1周前 作者 h691938207 来自 鸿蒙OS

HarmonyOS鸿蒙Next中实现简单旅游应用示例代码 介绍

本示例构建了一个简单的旅游应用,应用案例内主要包含以下三种功能。

  • 通过列表展示用户动态信息
  • 通过地图功能展示旅游景点位置
  • 通过列表展示旅游景点信息

简单旅游应用实现源码链接

效果预览

![图片名称]

使用说明

  1. 进入应用后,首先弹出访问位置权限,同意后应用即可使用位置权限。
  2. 主页点击发现按钮即可进入地图发现旅游景点。
  3. 后续点击列表按钮,可以以列表形式展示各个旅游景点的信息。
  4. 返回到主页后点击动态按钮即可进入动态页面,以列表形式展示动态信息。

依赖配置

在entry\src\main\ets\entryability\EntryAbility.ts中做如下配置请求用户开启地图定位服务权限,首次进入程序时 需向用户弹窗请求开启以下权限。

const permissions: Array<Permissions> = [
    'ohos.permission.LOCATION',
    'ohos.permission.APPROXIMATELY_LOCATION'
];

实现思路

动态页实现

使用List实现动态列表的呈现,使用LazyForEach实现性能优化。

List() {
    LazyForEach(this.trendsListData, (item: Trends, index: number) => {
    ListItem() {
        TrendsItem({ trendsItemData: item })
    }
    })
}

地图页实现

  1. 实现地图初始化,设置地图中心点坐标及层级;实现标记点初始化;实现地图初始化的回调。
this.mapOption = {
    ···
};
this.markerOptions = {
    ···
};
this.callback = async (err, mapController) => {
    ···
};
  1. 通过以动画形式移动地图相机,实现移动到坐标点并标记功能。
mapCameraPosition(location: mapCommon.LatLng, siteId?: string) {
let zoom = 20;
let cameraUpdate = map.newLatLng(location, zoom);
this.mapController?.animateCamera(cameraUpdate, 1000);
this.addMapMaker(location, siteId)
}
  1. 通过创建Maker,实现地图上增加标记点功能。
addMapMaker(location: mapCommon.LatLng, siteId?: string) {
this.mapController?.clear();
let markerOptions: mapCommon.MarkerOptions = {
    ···
};
this.mapController?.addMarker(markerOptions);
}
  1. 通过构造queryLocation函数,实现查询地点详情功能。
queryLocation(id: string) {
let queryLocationOptions: sceneMap.LocationQueryOptions = {
    siteId: id
};
···
}
  1. 通过构造chooseLocation函数,实现地图选点功能。
  chooseLocation(location: mapCommon.LatLng) {
    let locationChoosingOptions: sceneMap.LocationChoosingOptions = {
      location: location,
      searchEnabled: true,
      showNearbyPoi: true
    };
···
  }
  1. 通过调用getCurrentLocation(),获取当前位置并将视图移动过去;创建CameraUpdate对象;以动画方式移动地图相机。
  getMyLocation() {
    geoLocationManager.getCurrentLocation().then(async (result) => {
      let position: geoLocationManager.Location = {
        ···
      };

      this.mapController?.setMyLocation(position);
      let gcj02Posion: mapCommon.LatLng = await this.convertCoordinate(result.latitude,result.longitude)
      let latLng: mapCommon.LatLng = {

      };
      let zoom = 15;
      let cameraUpdate = map.newLatLng(latLng, zoom);
      this.mapController?.animateCamera(cameraUpdate, 1000);
    })
  }

更多关于HarmonyOS鸿蒙Next中实现简单旅游应用示例代码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS鸿蒙Next中实现简单旅游应用,可以使用ArkTS语言进行开发。以下是一个简单的示例代码,展示如何创建一个基本的旅游应用页面,包含景点列表和详情展示。

import { Component, State, ListItemBuilder, List, Text, Image, Navigator } from '@ohos/harmony';

@Component
struct TouristSpot {
  name: string;
  image: string;
  description: string;
}

@Entry
@Component
struct TravelApp {
  @State spots: TouristSpot[] = [
    { name: '景点1', image: 'image1.png', description: '这是景点1的描述' },
    { name: '景点2', image: 'image2.png', description: '这是景点2的描述' },
    { name: '景点3', image: 'image3.png', description: '这是景点3的描述' }
  ];

  build() {
    List({ space: 10 }) {
      ForEach(this.spots, (spot: TouristSpot) => {
        ListItemBuilder() {
          this.buildSpotItem(spot);
        }
      });
    }
  }

  buildSpotItem(spot: TouristSpot) {
    Column() {
      Image(spot.image)
        .width(100)
        .height(100);
      Text(spot.name)
        .fontSize(20);
      Text(spot.description)
        .fontSize(14);
    }
    .onClick(() => {
      this.navigateToDetail(spot);
    });
  }

  navigateToDetail(spot: TouristSpot) {
    Navigator.push({
      uri: 'pages/DetailPage',
      params: { spot }
    });
  }
}

@Component
struct DetailPage {
  @State spot: TouristSpot;

  build() {
    Column() {
      Image(this.spot.image)
        .width(200)
        .height(200);
      Text(this.spot.name)
        .fontSize(24);
      Text(this.spot.description)
        .fontSize(16);
    }
  }
}

该代码定义了一个简单的旅游应用,包含一个景点列表页面和一个详情页面。TravelApp组件展示了景点列表,点击列表项会跳转到详情页面DetailPage,展示选中的景点详细信息。

更多关于HarmonyOS鸿蒙Next中实现简单旅游应用示例代码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,你可以使用ArkTS开发一个简单的旅游应用。以下是一个示例代码,展示如何创建一个包含旅游景点列表的页面:

import { Component, State, List, ListItem, Text, Image } from '@ohos/hap';

@Component
struct TourismApp {
  @State private attractions: Array<{ name: string, image: string }> = [
    { name: "长城", image: "great_wall.jpg" },
    { name: "故宫", image: "forbidden_city.jpg" },
    { name: "西湖", image: "west_lake.jpg" }
  ];

  build() {
    List({ space: 10 }) {
      ForEach(this.attractions, (attraction) => {
        ListItem({ key: attraction.name }) {
          Row({ space: 10 }) {
            Image(attraction.image)
              .width(100)
              .height(100)
            Text(attraction.name)
              .fontSize(20)
          }
        }
      })
    }
  }
}

这个示例代码创建了一个旅游景点列表,每个景点包含图片和名称。你可以根据需要扩展功能,如添加详情页面或搜索功能。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!