amap_map_fluttify

This commit is contained in:
yangjie 2024-11-17 15:45:43 +08:00
commit ee80f75473
554 changed files with 220726 additions and 0 deletions

43
.gitignore vendored Normal file
View File

@ -0,0 +1,43 @@
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
migrate_working_dir/
# IntelliJ related
*.iml
*.ipr
*.iws
.idea/
# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/
# Flutter/Dart/Pub related
**/doc/api/
**/ios/Flutter/.last_build_id
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.pub-cache/
.pub/
/build/
# Symbolication related
app.*.symbols
# Obfuscation related
app.*.map.json
# Android Studio will place build artifacts here
/android/app/debug
/android/app/profile
/android/app/release

407
CHANGELOG.md Normal file
View File

@ -0,0 +1,407 @@
## 1.6.1
- feat: 重新设置折线点列表 可用于轨迹记录
## 1.2.1
- feat: 增加帧动画和缩放/透明度/旋转动画支持
## 1.1.0
- 合并搜索和定位插件
## 1.0.0
- chore: 清除deprecated接口
- enhance: 增加autoRelease参数, 控制是否自动释放对象
- enhance: 优化构造器传参
## 0.23.4
- enhance: 优化批量widget marker速度
- feat: 设置地图长按监听事件
- feat: **自定义InfoWindow**
- docs: 更新群聊信息
## 0.23.3
- enhance: 枚举优化
- enhance: 简化图片逻辑
- feat: 删除海量点
## 0.23.2
- roll engine #1aee42f3
## 0.23.1
- fix: 给snippet和title默认设置为空字符串, 防止ios端崩溃
## 0.23.0
- roll engine #ee5b257c
- docs: 配置key的说明
- chore: 重新创建ios工程
- docs: 调整权限申请示例
- enhance: [breaking change] ios端的marker不再需要设置width和height
- fix: addMarkers返回类型不匹配的问题
- feat: 添加图片覆盖物
## 0.22.2
- enhance: Marker添加修改icon的方法
## 0.22.1
- roll engine #57fc8440 (适配Flutter 1.17)
## 0.22.0
- enhance: 提升依赖
## 0.21.0
- enhance: _uri2ImageData增加package参数
- enhance: [breaking change] setCenterCoordinate经纬度参数合并为LatLng类型
- enhance: clear方法增加一个可选参数 keepMyLocation 用来区分是否需要保留自己的位置的
- fix: 没有配置默认图片时, addMarkers错误处理
- enhance: 调整线 框 圆的默认宽度
- feat: 添加海量点
- enhance: [breaking change] zoomToSpan方法的padding参数改为EdgeInsets类型
## 0.20.0
- enhance: 提升底层依赖
- roll engine #cced4adc
- docs: 优化README
- enhance: [breaking change] 优化clearMarkers方法, 增加List<Marker>参数, 统一android和ios两端的行为
- enhance: 批量添加marker使用批处理提升速度
- enhance: 优化ios端MyLocationType.Locate的逻辑
## 0.19.2
- fix: ios端多实例delegate的处理
- roll engine #37387b7e
## 0.19.1
- fix: tag -> tag__
## 0.19.0
- enhance: 提升底层依赖
## 0.18.3
- feat: 增加打开离线地图管理器
## 0.18.2
- fix: 调用fromScreenLocation后调用Circle.remove方法报错处理
- fix: ios端回调无效处理
## 0.18.1
- roll engine #5191928e
- enhance: ios端Marker去除setCoordinate和setVisible方法, 防止阻塞
## 0.18.0
- enhance: [breaking change] 优化定位api (#183, #182)
- fix: addMarkers的rotateAngle无效修正
- docs: 更新技术支持相关信息
- enhance: Marker锚点默认为(0, 0.5)
## 0.17.21
- roll engine #481e45c1
## 0.17.20
- roll engine #dbad1c35
## 0.17.19
- feat: 轨迹纠偏实现 (#118)
- enhance: 清除marker使用批处理
## 0.17.18
- roll engine #5fd57b0
- fix: Neither user 10426 nor current process has android.permission.WAKE_LOCK 错误处理
## 0.17.17
- enhance: TraceLocation转换使用批处理优化
- enhance: addPolyline和addPolygon使用批处理创建经纬度列表, 提升性能 related #160
## 0.17.16
- feat: Marker添加更改坐标的方法
- feat: Marker添加setVisible方法, 设置marker是否可见
## 0.17.15
- enhance: 借用新的release_batch方法释放对象, 提升性能
## 0.17.14
- fix: 当marker图片过大时, 点击事件只有左上角有效 处理
## 0.17.13
- enhance: build.gradle加入国内源
- enhance: showMyLocation增加定位模式的参数
## 0.17.12
- feat: 热力图实现
## 0.17.11
- enhance: 加载图片时,做一个缓存
## 0.17.10
- roll engine #69360c9
## 0.17.9
- docs: 去除swift项目说明
- enhance: MarkerOption增加width和height参数, 仅限ios
## 0.17.8
- 提升依赖
## 0.17.7
- enhance: ios端合并mapViewMapDidMoveByUser和mapViewMapDidZoomByUser.
- fix: onMapCreated空判断
## 0.17.6
- feat: 增加轨迹功能 (#63)
- docs: README加入apk下载链接
- enhance: 加入打包好的apk
- enhance: 加入打包的jks (#139)
## 0.17.5
- roll engine #26272df
- feat: MarkerOption增加自定义数据字段 (#15)
- fix: setCenterCoordinate的zoomLevel asset错误处理
## 0.17.4
- fix: setCenterCoordinate的zoomLevel没有设置时触发了assert的错误
## 0.17.3
- enhance: ios端支持不同样式的marker
## 0.17.2
- roll engine #4d92ce0.
## 0.17.1
- roll engine #2721fb9
- fix: 修正安卓端CameraPosition构造函数tilt和bearing位置 (#133)
## 0.17.0
- enhance: Android端可以不用通过AndroidManifest.xml配置key
## 0.16.3
- fix: setCenterCoordinate的时候, 如果没有设置bearing和tilt, 则使用地图已有的状态
## 0.16.2
- feat: 增加获取缩放等级的方法
## 0.16.1
- feat: 限制显示区域
## 0.16.0
- roll engine #a3d4e61
## 0.15.0
- 提升依赖
## 0.14.2
- enhance: [android] 在onMapLoaded回调之后再回调onMapCreated
## 0.14.1
- feat: 绘制折线提供虚线的样式
- chore: 增加CI
## 0.14.0
- roll engine #e26c0fa
- enhance: 提升依赖
## 0.13.1
- enhance: 使用类常量代替字面量
- enhance: 当前位置大头针显示处理
- feat: Polygon增加判断点是否在区域内的方法`contains`
- feat: 增加setZoomByCenter设置是否以地图中心点进行缩放
## 0.13.0
- enhance: [breaking change] Location -> MapLocation 防止与amap_location_fluttify的Location对象冲突
- fix: 构造器传zoomLevel无效的处理
## 0.12.3
- feat: 增加setInfoWindowClickListener弹窗点击事件
## 0.12.2
- feat: 添加clear方法, 清除所有添加在地图上的覆盖物
- enhance: 提高flutter的约束版本
- enhance: 开放AmapController内部的androidController和iosController, 供使用者自行通过extension实现自己需要的方法
## 0.12.1
- fix: 降低url_launcher的版本
## 0.12.0
- docs: 添加requestPermission的参考实现
- enhance: 增加对zoomLevel的断言和文档说明
- enhance: [breaking change] getLocation方法更加可靠地获取定位信息, 要么有定位信息要么超时
- enhance: 导出amap_core_fluttify
- feat: 增加setMyLocationRotateAngle方法, ios端未实现
- fix: dispose时调用地图的生命周期方法
- enhance: 各平台的初始化方法放在onMapCreated前面执行
- feat: 增加setMyLocationChangeListener
## 0.11.0
- roll engine #a918944
- enhance: 适配flutter 1.12.13
## 0.10.5
- feat: showMyLocation方法提供自定义图标的参数
- feat: Polygon和Circle增加remove方法
## 0.10.4
- docs: 改善zoomToSpan的说明
- fix: addMarkers方法添加infoWindowEnable的处理
## 0.10.3
- feat: 加入zoomToSpan方法
- docs: 如果使用全部组件就使用amap_all_fluttify
## 0.10.2
- docs: swift工程说明
- roll engine #a1a3fff
## 0.10.1
- 更新依赖
## 0.10.0
- fix: [breaking change] 增加单独的地图开始移动的回调, 统一android和ios的行为
## 0.9.1
- enhance: ios端地图移动加入开始移动的回调, 使之和android端行为保持一致.
## 0.9.0
- enhance: amap_controller作为amap_view的part, 防止AmapViewState被外部访问
- enhance: infoWindowEnabled默认true
- enhance: [breaking change] 纠正语义 onMapDrag -> onMapMoved, onMapClick -> onMapClicked, onMarkerClick -> onMarkerClicked
## 0.8.4
- fix: 用来获取MarkerLayer的GlobalKey在State中创建防止出现多个MapView使用一个GlobalKey的情况
## 0.8.3
- feat: MarkerOption增加是否可以显示弹窗的选项
- enhance: 批量Marker实现widget as marker
- feat: 增加经纬度坐标和屏幕坐标互转的方法
## 0.8.2
- feat: 增加widget as marker功能
- doc: Android设置key的说明
## 0.8.1
- doc: README更新 初始化方法替换, 关闭日志的方法
- enhance: 不再需要拷贝系统的图片分辨率算法
- enhance: 简化_uri2ImageData逻辑
- roll engine #286db79
## 0.8.0
- enhance: [breaking change] android端的初始化使用构造器初始化而不是间接调用方法防止偶尔出现的初始化错误
## 0.7.2
- `getLocation`增加一个可选的delay参数, 指定延迟多少时间再获取定位
## 0.7.1
- feat: 新增自定义地图功能
## 0.7.0
- 底层更新
## 0.6.1
- doc: Troubleshooting更新
- feat: 增加截图功能
## 0.6.0
- fix: [breaking change] 所有的回调都返回Future, 并且调用时都加await
- enhance: 提供一个盖住PlatformView黑屏的途径
## 0.5.7
- doc: ImageConfiguration的说明
- fix: onMapCreated返回Future并用await修饰
- feat: Marker增加显示弹窗和关闭弹窗的方法 #61
## 0.5.6
- fix: 未配置onMapCreated时, 初始化参数不应该无效
## 0.5.5
- doc: 调整plist说明
- fix: setCenterCoordinate不设置默认的zoomLevel为15, 如果没有传入zoomLevel就使用当前的zoomLevel.
## 0.5.4
- feat: marker增加角度和锚点选项
- doc: 增加iOS端配置的说明
## 0.5.3
- doc: 加入版本规划说明
- feat: 增加调用高德地图app导航的功能
## 0.5.2
- fix: 设置地图中心点时, ios端的zoomLevel未调用
- doc: requestPermission方法说明
## 0.5.1
- doc: git clone失败的提示
- doc: 使用真机调试
- feat: 画折线添加尾部样式和连接点样式的参数
- feat: 新增删除polyline的方法Polyline::remove
## 0.5.0
- feat: 画线添加自定义纹理参数;
- enhancement: [breaking change] 抽取画圆画多边形的参数
## 0.4.1
- chore: export文件增加library指令
- enhancement: 加强assert失败的提示
## 0.4.0
- [breaking change] enhancement: addMarker(s)方法去除BuildContext参数
- feat: 增加requireAlwaysAuth方法 申请后台定位
## 0.3.4
- feat: 增加坐标转换方法AmapService::convertCoord
- fix: ios获取定位后释放对应对象
- enhancement: AmapView增加初始化参数 简化创建过程
## 0.3.3
- enhancement: showMyLocation增加精度圈边框宽度, 颜色以及填充颜色的设置
- fix: ios移动地图应该回调地图中心点的坐标而不是用户所在坐标
## 0.3.2
- fix: #18 android的marker设置了点击之后, 仍然显示弹窗
- fix: #22.1 解决annotation划出屏幕后被回收重新回到屏幕后消失的bug
- fix: #24 android端setCenterCoordinate animated参数无效的bug
- fix: 根据标题是否为null来判断marker是否可以显示弹窗
## 0.3.1
- enhancement: 完善android端生命周期回调
- feat: 不通过定位组件直接获取经纬度
- feat: 监听地图移动
## 0.3.0
- feat: 批量添加marker
- enhancement: 增加生命周期回调
- fix: #16 ios marker点击事件修复
## 0.2.8
- doc: git-lfs超额说明
## 0.2.7
- feat: 添加地图点击监听
- feat: 删除单个marker和删除所有marker
- feat: 增加calculateDistance方法
## 0.2.6
- enhancement: 使用amap_core的LatLng
## 0.2.5
- feat: 增加获取地图中心点的功能
## 0.2.4
- fix: 释放原生对象时, 只释放当前插件创建的对象
## 0.2.3
- 切换地图语言
## 0.2.2
- roll engine #38df15a 主要增加了对lambda的支持
## 0.2.1
- feature: marker拖动事件
## 0.2.0
- 加强对多fluttify模块的支持
## 0.1.0
- 加入文档
## 0.0.3
- 添加多边形
## 0.0.3
- 画圆
- 画线
- 添加marker

13
LICENSE Normal file
View File

@ -0,0 +1,13 @@
Copyright 2020 yohom
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

81
README.md Normal file
View File

@ -0,0 +1,81 @@
# [文档](https://github.com/fluttify-project/amap_map_fluttify/wiki) [文档](https://github.com/fluttify-project/amap_map_fluttify/wiki) [文档](https://github.com/fluttify-project/amap_map_fluttify/wiki)
![Logo](https://github.com/fluttify-project/fluttify-core-example/blob/develop/other/Logo-Landscape.png?raw=true)
# 高德地图 地图组件 Flutter插件
[![pub package](https://img.shields.io/pub/v/amap_map_fluttify.svg)](https://pub.Flutter-io.cn/packages/amap_map_fluttify)
## 依赖
```yaml
dependencies:
flutter:
sdk: flutter
amap_map_fluttify: ^x.x.x
```
## 配置
### Android
1. 注意在app/build.gradle的android块中配置签名信息, 并在buildTypes块中指定签名信息, 否则将无法匹配到你在高德后台配置的appkey, 例如:
```groovy
android {
signingConfigs {
release {
keyAlias 'amap_map_test'
keyPassword 'amap_map_test'
storeFile file('../amap_map_test.jks')
storePassword 'amap_map_test'
}
}
buildTypes {
debug {
signingConfig signingConfigs.release
}
profile {
signingConfig signingConfigs.release
}
release {
signingConfig signingConfigs.release
}
}
}
```
### iOS
1. 定位需要声明权限, 在Info.plist中添加:
```xml
<key>NSLocationWhenInUseUsageDescription</key>
<string>需要定位权限</string>
```
2. 调用高德地图需要添加白名单:
```dart
<key>LSApplicationQueriesSchemes</key>
<array>
<string>iosamap</string>
<string>amapuri</string>
</array>
```
## 导入
```dart
import 'package:amap_map_fluttify/amap_map_fluttify.dart';
```
## 使用
参考[wiki](https://github.com/fluttify-project/amap_map_fluttify/wiki).
## LICENSE
> Copyright (C) 2022 yohom
>
> This program is free software: you can redistribute it and/or modify
> it under the terms of the GNU General Public License as published by
> the Free Software Foundation, either version 3 of the License, or
> (at your option) any later version.
>
> This program is distributed in the hope that it will be useful,
> but WITHOUT ANY WARRANTY; without even the implied warranty of
> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> GNU General Public License for more details.
>
> You should have received a copy of the GNU General Public License
> along with this program. If not, see <https://www.gnu.org/licenses/>.

10
analysis_options.yaml Normal file
View File

@ -0,0 +1,10 @@
include: package:flutter_lints/flutter.yaml
linter:
rules:
camel_case_types: false
camel_case_extensions: false
omit_local_variable_types: false
unnecessary_this: false
no_leading_underscores_for_local_identifiers: false
library_private_types_in_public_api: false

67
android/build.gradle Normal file
View File

@ -0,0 +1,67 @@
group 'me.yohom.amap_map_fluttify'
version '1.0-SNAPSHOT'
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.1.2'
}
}
rootProject.allprojects {
repositories {
google()
mavenCentral()
}
}
apply plugin: 'com.android.library'
android {
compileSdkVersion 31
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
main.jniLibs.srcDir 'libs'
}
defaultConfig {
minSdkVersion 16
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
lintOptions {
disable 'InvalidPackage'
}
compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_1_8
}
packagingOptions {
merge 'res/values/values.xml'
merge 'AndroidManifest.xml'
merge 'R.txt'
merge 'classes.jar'
merge 'proguard.txt'
}
buildTypes {
release {
consumerProguardFiles "proguard-rules.pro"
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
implementation 'androidx.annotation:annotation:1.1.0'
implementation 'androidx.appcompat:appcompat:1.1.0'
compileOnly rootProject.findProject(":foundation_fluttify")
// flutter plugin dependency
// sdk dependency
api 'com.amap.api:3dmap:9.2.1'
}

26
android/proguard-rules.pro vendored Normal file
View File

@ -0,0 +1,26 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
# 高德地图混淆规则
-keep class com.amap.api.maps.**{*;}
-keep class com.autonavi.**{*;}
-keep class com.amap.api.trace.**{*;}

1
android/settings.gradle Normal file
View File

@ -0,0 +1 @@
rootProject.name = 'amap_map_fluttify'

View File

@ -0,0 +1,22 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="me.yohom.amap_map_fluttify">
<!--允许程序打开网络套接字-->
<uses-permission android:name="android.permission.INTERNET"/>
<!--允许程序设置内置sd卡的写权限-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!--允许程序获取网络状态-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!--允许程序访问WiFi网络信息-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<!--允许程序读写手机状态和身份-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<!--允许程序访问CellID或WiFi热点来获取粗略的位置-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<!--如果不加回报 error, Neither user 10426 nor current process has android.permission.WAKE_LOCK., null-->
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<application>
<activity android:name="com.amap.api.maps.offlinemap.OfflineMapActivity" />
</application>
</manifest>

View File

@ -0,0 +1,186 @@
//////////////////////////////////////////////////////////
// GENERATED BY FLUTTIFY. DO NOT EDIT IT.
//////////////////////////////////////////////////////////
package me.yohom.amap_map_fluttify;
import android.os.Bundle;
import android.util.Log;
import android.app.Activity;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import androidx.annotation.NonNull;
import io.flutter.embedding.engine.plugins.FlutterPlugin;
import io.flutter.embedding.engine.plugins.activity.ActivityAware;
import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding;
import io.flutter.plugin.common.BinaryMessenger;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.PluginRegistry.Registrar;
import io.flutter.plugin.common.StandardMethodCodec;
import io.flutter.plugin.platform.PlatformViewRegistry;
import me.yohom.amap_map_fluttify.sub_handler.*;
import me.yohom.amap_map_fluttify.sub_handler.custom.SubHandlerCustom;
import me.yohom.foundation_fluttify.core.FluttifyMessageCodec;
import static me.yohom.foundation_fluttify.FoundationFluttifyPluginKt.getEnableLog;
import static me.yohom.foundation_fluttify.FoundationFluttifyPluginKt.getHEAP;
@SuppressWarnings("ALL")
public class AmapMapFluttifyPlugin implements FlutterPlugin, MethodChannel.MethodCallHandler, ActivityAware {
private static List<Map<String, Handler>> handlerMapList;
// v1 android embedding for compatible
public static void registerWith(Registrar registrar) {
final MethodChannel channel = new MethodChannel(registrar.messenger(), "me.yohom/amap_map_fluttify", new StandardMethodCodec(new FluttifyMessageCodec()));
AmapMapFluttifyPlugin plugin = new AmapMapFluttifyPlugin();
BinaryMessenger messenger = registrar.messenger();
PlatformViewRegistry platformViewRegistry = registrar.platformViewRegistry();
Activity activity = registrar.activity();
plugin.messenger = messenger;
plugin.platformViewRegistry = platformViewRegistry;
handlerMapList = new ArrayList<>();
handlerMapList.add(SubHandler0.getSubHandler(messenger));
handlerMapList.add(SubHandler1.getSubHandler(messenger));
handlerMapList.add(SubHandler2.getSubHandler(messenger));
handlerMapList.add(SubHandler3.getSubHandler(messenger));
handlerMapList.add(SubHandler4.getSubHandler(messenger));
handlerMapList.add(SubHandler5.getSubHandler(messenger));
handlerMapList.add(SubHandler6.getSubHandler(messenger));
handlerMapList.add(SubHandler7.getSubHandler(messenger));
handlerMapList.add(SubHandler8.getSubHandler(messenger));
handlerMapList.add(SubHandler9.getSubHandler(messenger));
handlerMapList.add(SubHandler10.getSubHandler(messenger));
handlerMapList.add(SubHandler11.getSubHandler(messenger));
handlerMapList.add(SubHandler12.getSubHandler(messenger));
handlerMapList.add(SubHandler13.getSubHandler(messenger));
handlerMapList.add(SubHandler14.getSubHandler(messenger));
handlerMapList.add(SubHandler15.getSubHandler(messenger));
handlerMapList.add(SubHandlerCustom.instance.getSubHandler(messenger, registrar.activity()));
channel.setMethodCallHandler(plugin);
// register platform view
platformViewRegistry.registerViewFactory("me.yohom/com.amap.api.maps.offlinemap.DownloadProgressView", new DownloadProgressViewFactory(messenger, activity));
platformViewRegistry.registerViewFactory("me.yohom/com.amap.api.maps.TextureMapView", new TextureMapViewFactory(messenger, activity));
platformViewRegistry.registerViewFactory("me.yohom/com.amap.api.maps.WearMapView", new WearMapViewFactory(messenger, activity));
platformViewRegistry.registerViewFactory("me.yohom/com.amap.api.maps.MapView", new MapViewFactory(messenger, activity));
}
private BinaryMessenger messenger;
private PlatformViewRegistry platformViewRegistry;
// v2 android embedding
@Override
public void onAttachedToEngine(FlutterPluginBinding binding) {
if (getEnableLog()) {
Log.d("fluttify-java", "AmapMapFluttifyPlugin::onAttachedToEngine@" + binding);
}
final MethodChannel channel = new MethodChannel(binding.getBinaryMessenger(), "me.yohom/amap_map_fluttify", new StandardMethodCodec(new FluttifyMessageCodec()));
messenger = binding.getBinaryMessenger();
platformViewRegistry = binding.getPlatformViewRegistry();
handlerMapList = new ArrayList<>();
handlerMapList.add(SubHandler0.getSubHandler(messenger));
handlerMapList.add(SubHandler1.getSubHandler(messenger));
handlerMapList.add(SubHandler2.getSubHandler(messenger));
handlerMapList.add(SubHandler3.getSubHandler(messenger));
handlerMapList.add(SubHandler4.getSubHandler(messenger));
handlerMapList.add(SubHandler5.getSubHandler(messenger));
handlerMapList.add(SubHandler6.getSubHandler(messenger));
handlerMapList.add(SubHandler7.getSubHandler(messenger));
handlerMapList.add(SubHandler8.getSubHandler(messenger));
handlerMapList.add(SubHandler9.getSubHandler(messenger));
handlerMapList.add(SubHandler10.getSubHandler(messenger));
handlerMapList.add(SubHandler11.getSubHandler(messenger));
handlerMapList.add(SubHandler12.getSubHandler(messenger));
handlerMapList.add(SubHandler13.getSubHandler(messenger));
handlerMapList.add(SubHandler14.getSubHandler(messenger));
handlerMapList.add(SubHandler15.getSubHandler(messenger));
channel.setMethodCallHandler(this);
}
@Override
public void onDetachedFromEngine(FlutterPluginBinding binding) {
if (getEnableLog()) {
Log.d("fluttify-java", "AmapMapFluttifyPlugin::onDetachedFromEngine@" + binding);
}
}
@Override
public void onAttachedToActivity(ActivityPluginBinding binding) {
if (getEnableLog()) {
Log.d("fluttify-java", "AmapMapFluttifyPlugin::onAttachedToActivity@" + binding);
}
Activity activity = binding.getActivity();
handlerMapList.add(SubHandlerCustom.instance.getSubHandler(messenger, activity));
// register platform view
platformViewRegistry.registerViewFactory("me.yohom/com.amap.api.maps.offlinemap.DownloadProgressView", new DownloadProgressViewFactory(messenger, activity));
platformViewRegistry.registerViewFactory("me.yohom/com.amap.api.maps.TextureMapView", new TextureMapViewFactory(messenger, activity));
platformViewRegistry.registerViewFactory("me.yohom/com.amap.api.maps.WearMapView", new WearMapViewFactory(messenger, activity));
platformViewRegistry.registerViewFactory("me.yohom/com.amap.api.maps.MapView", new MapViewFactory(messenger, activity));
}
@Override
public void onDetachedFromActivity() {
if (getEnableLog()) {
Log.d("fluttify-java", "AmapMapFluttifyPlugin::onDetachedFromActivity");
}
}
@Override
public void onReattachedToActivityForConfigChanges(ActivityPluginBinding binding) {
if (getEnableLog()) {
Log.d("fluttify-java", "AmapMapFluttifyPlugin::onReattachedToActivityForConfigChanges@" + binding);
}
}
@Override
public void onDetachedFromActivityForConfigChanges() {
if (getEnableLog()) {
Log.d("fluttify-java", "AmapMapFluttifyPlugin::onDetachedFromActivityForConfigChanges");
}
}
@Override
public void onMethodCall(@NonNull MethodCall methodCall, @NonNull MethodChannel.Result methodResult) {
Handler handler = null;
for (Map<String, Handler> handlerMap : handlerMapList) {
if (handlerMap.containsKey(methodCall.method)) {
handler = handlerMap.get(methodCall.method);
break;
}
}
if (handler != null) {
try {
handler.call(methodCall.arguments, methodResult);
} catch (Exception e) {
e.printStackTrace();
methodResult.error(e.getMessage(), null, null);
}
} else {
methodResult.notImplemented();
}
}
@FunctionalInterface
public static interface Handler {
void call(Object args, MethodChannel.Result methodResult) throws Exception;
}
}

View File

@ -0,0 +1,69 @@
//////////////////////////////////////////////////////////
// GENERATED BY FLUTTIFY. DO NOT EDIT IT.
//////////////////////////////////////////////////////////
package me.yohom.amap_map_fluttify;
import android.content.Context;
import android.view.View;
import android.util.Log;
import android.app.Activity;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
import io.flutter.plugin.common.BinaryMessenger;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.PluginRegistry.Registrar;
import io.flutter.plugin.common.StandardMessageCodec;
import io.flutter.plugin.common.StandardMethodCodec;
import io.flutter.plugin.platform.PlatformView;
import io.flutter.plugin.platform.PlatformViewFactory;
import me.yohom.foundation_fluttify.core.FluttifyMessageCodec;
import static me.yohom.foundation_fluttify.FoundationFluttifyPluginKt.getHEAP;
import static me.yohom.foundation_fluttify.FoundationFluttifyPluginKt.getEnableLog;
@SuppressWarnings("ALL")
class DownloadProgressViewFactory extends PlatformViewFactory {
DownloadProgressViewFactory(BinaryMessenger messenger, Activity activity) {
super(StandardMessageCodec.INSTANCE);
this.messenger = messenger;
this.activity = activity;
}
private BinaryMessenger messenger;
private Activity activity;
@Override
public PlatformView create(Context context, int id, Object params) {
Map<String, Object> __args__ = (Map<String, Object>) params;
////////////////////////////////初始化AndroidView////////////////////////////////////////
////////////////////////////////初始化AndroidView////////////////////////////////////////
com.amap.api.maps.offlinemap.DownloadProgressView view = new com.amap.api.maps.offlinemap.DownloadProgressView(activity);
// 同时存放viewId和refId的对象, 供后续viewId转refId使用
getHEAP().put(String.valueOf(Integer.MAX_VALUE - id), view);
getHEAP().put("com.amap.api.maps.offlinemap.DownloadProgressView:" + String.valueOf(System.identityHashCode(view)), view);
return new PlatformView() {
// add to HEAP
@Override
public View getView() {
return view;
}
@Override
public void dispose() {}
};
}
}

View File

@ -0,0 +1,104 @@
//////////////////////////////////////////////////////////
// GENERATED BY FLUTTIFY. DO NOT EDIT IT.
//////////////////////////////////////////////////////////
package me.yohom.amap_map_fluttify;
import android.content.Context;
import android.view.View;
import android.util.Log;
import android.app.Activity;
import com.amap.api.maps.AMapOptions;
import com.amap.api.maps.model.CameraPosition;
import com.amap.api.maps.model.LatLng;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
import io.flutter.plugin.common.BinaryMessenger;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.PluginRegistry.Registrar;
import io.flutter.plugin.common.StandardMessageCodec;
import io.flutter.plugin.common.StandardMethodCodec;
import io.flutter.plugin.platform.PlatformView;
import io.flutter.plugin.platform.PlatformViewFactory;
import me.yohom.foundation_fluttify.core.FluttifyMessageCodec;
import static me.yohom.foundation_fluttify.FoundationFluttifyPluginKt.getHEAP;
import static me.yohom.foundation_fluttify.FoundationFluttifyPluginKt.getEnableLog;
@SuppressWarnings("ALL")
class MapViewFactory extends PlatformViewFactory {
MapViewFactory(BinaryMessenger messenger, Activity activity) {
super(StandardMessageCodec.INSTANCE);
this.messenger = messenger;
this.activity = activity;
}
private BinaryMessenger messenger;
private Activity activity;
@Override
public PlatformView create(Context context, int id, Object params) {
Map<String, Object> __args__ = (Map<String, Object>) params;
Integer mapType = (Integer) __args__.get("mapType");
Boolean showZoomControl = (Boolean) __args__.get("showZoomControl");
Boolean showCompass = (Boolean) __args__.get("showCompass");
Boolean showScaleControl = (Boolean) __args__.get("showScaleControl");
Boolean zoomGesturesEnabled = (Boolean) __args__.get("zoomGesturesEnabled");
Boolean scrollGesturesEnabled = (Boolean) __args__.get("scrollGesturesEnabled");
Boolean rotateGestureEnabled = (Boolean) __args__.get("rotateGestureEnabled");
Boolean tiltGestureEnabled = (Boolean) __args__.get("tiltGestureEnabled");
Double zoomLevel = (Double) __args__.get("zoomLevel");
Double tilt = (Double) __args__.get("tilt");
Double bearing = (Double) __args__.get("bearing");
Double centerCoordinateLatitude = (Double) __args__.get("centerCoordinateLatitude");
Double centerCoordinateLongitude = (Double) __args__.get("centerCoordinateLongitude");
AMapOptions options = new AMapOptions();
if (mapType != null) options.mapType(mapType + 1);
if (showZoomControl != null) options.zoomControlsEnabled(showZoomControl);
if (showCompass != null) options.compassEnabled(showCompass);
if (showScaleControl != null) options.scaleControlsEnabled(showScaleControl);
if (zoomGesturesEnabled != null) options.zoomGesturesEnabled(zoomGesturesEnabled);
if (scrollGesturesEnabled != null) options.scrollGesturesEnabled(scrollGesturesEnabled);
if (rotateGestureEnabled != null) options.rotateGesturesEnabled(rotateGestureEnabled);
if (tiltGestureEnabled != null) options.tiltGesturesEnabled(tiltGestureEnabled);
CameraPosition.Builder builder = CameraPosition
.builder()
.bearing(bearing == null ? 0 : bearing.floatValue())
.tilt(tilt == null ? 0 : tilt.floatValue())
.zoom(zoomLevel == null ? 0 : zoomLevel.floatValue());
if (centerCoordinateLatitude != null && centerCoordinateLongitude != null) {
builder.target(new LatLng(centerCoordinateLatitude, centerCoordinateLongitude));
}
options.camera(builder.build());
////////////////////////////////初始化AndroidView////////////////////////////////////////
com.amap.api.maps.MapView view = new com.amap.api.maps.MapView(activity, options);
// 同时存放viewId和refId的对象, 供后续viewId转refId使用
getHEAP().put(String.valueOf(Integer.MAX_VALUE - id), view);
getHEAP().put("com.amap.api.maps.MapView:" + String.valueOf(System.identityHashCode(view)), view);
return new PlatformView() {
// add to HEAP
@Override
public View getView() {
return view;
}
@Override
public void dispose() {}
};
}
}

View File

@ -0,0 +1,99 @@
//////////////////////////////////////////////////////////
// GENERATED BY FLUTTIFY. DO NOT EDIT IT.
//////////////////////////////////////////////////////////
package me.yohom.amap_map_fluttify;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.View;
import com.amap.api.maps.AMapOptions;
import com.amap.api.maps.model.CameraPosition;
import com.amap.api.maps.model.LatLng;
import java.util.HashMap;
import java.util.Map;
import io.flutter.plugin.common.BinaryMessenger;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.StandardMessageCodec;
import io.flutter.plugin.common.StandardMethodCodec;
import io.flutter.plugin.platform.PlatformView;
import io.flutter.plugin.platform.PlatformViewFactory;
import me.yohom.foundation_fluttify.core.FluttifyMessageCodec;
import static me.yohom.foundation_fluttify.FoundationFluttifyPluginKt.getEnableLog;
import static me.yohom.foundation_fluttify.FoundationFluttifyPluginKt.getHEAP;
@SuppressWarnings("ALL")
class TextureMapViewFactory extends PlatformViewFactory {
TextureMapViewFactory(BinaryMessenger messenger, Activity activity) {
super(StandardMessageCodec.INSTANCE);
this.messenger = messenger;
this.activity = activity;
}
private BinaryMessenger messenger;
private Activity activity;
@Override
public PlatformView create(Context context, int id, Object params) {
Map<String, Object> __args__ = (Map<String, Object>) params;
Integer mapType = (Integer) __args__.get("mapType");
Boolean showZoomControl = (Boolean) __args__.get("showZoomControl");
Boolean showCompass = (Boolean) __args__.get("showCompass");
Boolean showScaleControl = (Boolean) __args__.get("showScaleControl");
Boolean zoomGesturesEnabled = (Boolean) __args__.get("zoomGesturesEnabled");
Boolean scrollGesturesEnabled = (Boolean) __args__.get("scrollGesturesEnabled");
Boolean rotateGestureEnabled = (Boolean) __args__.get("rotateGestureEnabled");
Boolean tiltGestureEnabled = (Boolean) __args__.get("tiltGestureEnabled");
Double zoomLevel = (Double) __args__.get("zoomLevel");
Double tilt = (Double) __args__.get("tilt");
Double bearing = (Double) __args__.get("bearing");
Double centerCoordinateLatitude = (Double) __args__.get("centerCoordinateLatitude");
Double centerCoordinateLongitude = (Double) __args__.get("centerCoordinateLongitude");
AMapOptions options = new AMapOptions();
if (mapType != null) options.mapType(mapType + 1);
if (showZoomControl != null) options.zoomControlsEnabled(showZoomControl);
if (showCompass != null) options.compassEnabled(showCompass);
if (showScaleControl != null) options.scaleControlsEnabled(showScaleControl);
if (zoomGesturesEnabled != null) options.zoomGesturesEnabled(zoomGesturesEnabled);
if (scrollGesturesEnabled != null) options.scrollGesturesEnabled(scrollGesturesEnabled);
if (rotateGestureEnabled != null) options.rotateGesturesEnabled(rotateGestureEnabled);
if (tiltGestureEnabled != null) options.tiltGesturesEnabled(tiltGestureEnabled);
CameraPosition.Builder builder = CameraPosition
.builder()
.bearing(bearing == null ? 0 : bearing.floatValue())
.tilt(tilt == null ? 0 : tilt.floatValue())
.zoom(zoomLevel == null ? 0 : zoomLevel.floatValue());
if (centerCoordinateLatitude != null && centerCoordinateLongitude != null) {
builder.target(new LatLng(centerCoordinateLatitude, centerCoordinateLongitude));
}
options.camera(builder.build());
////////////////////////////////初始化AndroidView////////////////////////////////////////
com.amap.api.maps.TextureMapView view = new com.amap.api.maps.TextureMapView(activity, options);
// 同时存放viewId和refId的对象, 供后续viewId转refId使用
getHEAP().put(String.valueOf(Integer.MAX_VALUE - id), view);
getHEAP().put("com.amap.api.maps.TextureMapView:" + String.valueOf(System.identityHashCode(view)), view);
return new PlatformView() {
// add to HEAP
@Override
public View getView() {
return view;
}
@Override
public void dispose() {}
};
}
}

View File

@ -0,0 +1,69 @@
//////////////////////////////////////////////////////////
// GENERATED BY FLUTTIFY. DO NOT EDIT IT.
//////////////////////////////////////////////////////////
package me.yohom.amap_map_fluttify;
import android.content.Context;
import android.view.View;
import android.util.Log;
import android.app.Activity;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
import io.flutter.plugin.common.BinaryMessenger;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.PluginRegistry.Registrar;
import io.flutter.plugin.common.StandardMessageCodec;
import io.flutter.plugin.common.StandardMethodCodec;
import io.flutter.plugin.platform.PlatformView;
import io.flutter.plugin.platform.PlatformViewFactory;
import me.yohom.foundation_fluttify.core.FluttifyMessageCodec;
import static me.yohom.foundation_fluttify.FoundationFluttifyPluginKt.getHEAP;
import static me.yohom.foundation_fluttify.FoundationFluttifyPluginKt.getEnableLog;
@SuppressWarnings("ALL")
class WearMapViewFactory extends PlatformViewFactory {
WearMapViewFactory(BinaryMessenger messenger, Activity activity) {
super(StandardMessageCodec.INSTANCE);
this.messenger = messenger;
this.activity = activity;
}
private BinaryMessenger messenger;
private Activity activity;
@Override
public PlatformView create(Context context, int id, Object params) {
Map<String, Object> __args__ = (Map<String, Object>) params;
////////////////////////////////初始化AndroidView////////////////////////////////////////
////////////////////////////////初始化AndroidView////////////////////////////////////////
com.amap.api.maps.WearMapView view = new com.amap.api.maps.WearMapView(activity);
// 同时存放viewId和refId的对象, 供后续viewId转refId使用
getHEAP().put(String.valueOf(Integer.MAX_VALUE - id), view);
getHEAP().put("com.amap.api.maps.WearMapView:" + String.valueOf(System.identityHashCode(view)), view);
return new PlatformView() {
// add to HEAP
@Override
public View getView() {
return view;
}
@Override
public void dispose() {}
};
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,752 @@
//////////////////////////////////////////////////////////
// GENERATED BY FLUTTIFY. DO NOT EDIT IT.
//////////////////////////////////////////////////////////
package me.yohom.amap_map_fluttify.sub_handler.custom;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import com.amap.api.maps.AMap;
import com.amap.api.maps.model.LatLng;
import com.amap.api.maps.model.Marker;
import com.amap.api.maps.utils.PathSmoothTool;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import io.flutter.plugin.common.BinaryMessenger;
import me.yohom.amap_map_fluttify.AmapMapFluttifyPlugin.Handler;
import me.yohom.amap_map_fluttify.sub_handler.custom.tile_provider.UrlTileProviderImpl;
import static me.yohom.foundation_fluttify.FoundationFluttifyPluginKt.getEnableLog;
import static me.yohom.foundation_fluttify.FoundationFluttifyPluginKt.getHEAP;
import static me.yohom.foundation_fluttify.FoundationFluttifyPluginKt.getSTACK;
@SuppressWarnings("ALL")
public class SubHandlerCustom {
public static final SubHandlerCustom instance = new SubHandlerCustom();
private SubHandlerCustom() { }
public static Map<String, Handler> getSubHandler(BinaryMessenger messenger, Activity activity) {
return new HashMap<String, Handler>() {{
put("com.amap.api.maps.AMap::setInfoWindowAdapterX", (__args__, __methodResult__) -> {
// ref
com.amap.api.maps.AMap __this__ = (com.amap.api.maps.AMap) ((Map<String, Object>) __args__).get("__this__");
// invoke native method
try {
__this__.setInfoWindowAdapter(new AMap.InfoWindowAdapter() {
@Override
public View getInfoWindow(Marker marker) {
Bitmap bitmap = (Bitmap) getSTACK().get("infoWindow");
ImageView view = new ImageView(activity);
view.setBackgroundColor(Color.TRANSPARENT);
view.setImageBitmap(bitmap);
// 调用完成后清空栈
getSTACK().clear();
return view;
}
@Override
public View getInfoContents(Marker marker) {
return null;
}
});
} catch (Throwable throwable) {
throwable.printStackTrace();
if (getEnableLog()) {
Log.d("Current HEAP: ", getHEAP().toString());
}
__methodResult__.error(throwable.getMessage(), null, null);
return;
}
// convert result to jsonable result
String jsonableResult = "success";
__methodResult__.success(jsonableResult);
});
put("com.amap.api.maps.model.UrlTileProviderX::create", (__rawArgs__, __methodResult__) -> {
Map<String, Object> __args__ = (Map<String, Object>) __rawArgs__;
final int width = (int) __args__.get("width");
final int height = (int) __args__.get("height");
final String urlTemplate = (String) __args__.get("urlTemplate");
try {
final UrlTileProviderImpl provider = new UrlTileProviderImpl(width, height, urlTemplate);
__methodResult__.success(provider);
} catch (Throwable throwable) {
throwable.printStackTrace();
if (getEnableLog()) {
Log.d("Current HEAP: ", getHEAP().toString());
}
__methodResult__.error(throwable.getMessage(), null, null);
return;
}
});
put("ObjectFactory::createcom_amap_api_maps_model_Gradient__intArray__floatArrayX", (__args__, __methodResult__) -> {
if (getEnableLog()) {
Log.d("ObjectFactory", "创建对象: com_amap_api_maps_model_Gradient__intArray__floatArray");
}
// args
// jsonable arg
int[] var1 = (int[]) ((Map<String, Object>) __args__).get("var1");
// jsonable arg
double[] var2 = (double[]) ((Map<String, Object>) __args__).get("var2");
float[] stopList = new float[var2.length];
for (int i = 0; i < var2.length; i++) {
stopList[i] = (float) var2[i];
}
// create target object
com.amap.api.maps.model.Gradient __obj__ = new com.amap.api.maps.model.Gradient(var1, stopList);
__methodResult__.success(__obj__);
});
//region 平滑轨迹
// method
put("com.amap.api.maps.utils.PathSmoothTool::setIntensity", (__args__, __methodResult__) -> {
// args
// ref arg
Number mIntensity = (Number) ((Map<String, Object>) __args__).get("mIntensity");
// ref
PathSmoothTool __this__ = (PathSmoothTool) ((Map<String, Object>) __args__).get("__this__");
// print log
if (getEnableLog()) {
Log.d("fluttify-java", "fluttify-java: com.amap.api.maps.utils.PathSmoothTool@" + __this__ + "::setIntensity(" + mIntensity + ")");
}
// invoke native method
Void __result__ = null;
try {
__this__.setIntensity(mIntensity.intValue());
} catch (Throwable throwable) {
throwable.printStackTrace();
if (getEnableLog()) {
Log.d("Current HEAP: ", getHEAP().toString());
}
__methodResult__.error(throwable.getMessage(), null, null);
return;
}
__methodResult__.success(__result__);
});
// method
put("com.amap.api.maps.utils.PathSmoothTool::getThreshhold", (__args__, __methodResult__) -> {
// args
// ref
PathSmoothTool __this__ = (PathSmoothTool) ((Map<String, Object>) __args__).get("__this__");
// print log
if (getEnableLog()) {
Log.d("fluttify-java", "fluttify-java: com.amap.api.maps.utils.PathSmoothTool@" + __this__ + "::getThreshhold(" + "" + ")");
}
// invoke native method
Float __result__ = null;
try {
__result__ = __this__.getThreshhold();
} catch (Throwable throwable) {
throwable.printStackTrace();
if (getEnableLog()) {
Log.d("Current HEAP: ", getHEAP().toString());
}
__methodResult__.error(throwable.getMessage(), null, null);
return;
}
__methodResult__.success(__result__);
});
// method
put("com.amap.api.maps.utils.PathSmoothTool::setThreshhold", (__args__, __methodResult__) -> {
// args
// ref arg
Number mThreshhold = (Number) ((Map<String, Object>) __args__).get("mThreshhold");
// ref
PathSmoothTool __this__ = (PathSmoothTool) ((Map<String, Object>) __args__).get("__this__");
// print log
if (getEnableLog()) {
Log.d("fluttify-java", "fluttify-java: com.amap.api.maps.utils.PathSmoothTool@" + __this__ + "::setThreshhold(" + mThreshhold + ")");
}
// invoke native method
Void __result__ = null;
try {
__this__.setThreshhold(mThreshhold.floatValue());
} catch (Throwable throwable) {
throwable.printStackTrace();
if (getEnableLog()) {
Log.d("Current HEAP: ", getHEAP().toString());
}
__methodResult__.error(throwable.getMessage(), null, null);
return;
}
__methodResult__.success(__result__);
});
// method
put("com.amap.api.maps.utils.PathSmoothTool::setNoiseThreshhold", (__args__, __methodResult__) -> {
// args
// ref arg
Number mnoiseThreshhold = (Number) ((Map<String, Object>) __args__).get("mnoiseThreshhold");
// ref
PathSmoothTool __this__ = (PathSmoothTool) ((Map<String, Object>) __args__).get("__this__");
// print log
if (getEnableLog()) {
Log.d("fluttify-java", "fluttify-java: com.amap.api.maps.utils.PathSmoothTool@" + __this__ + "::setNoiseThreshhold(" + mnoiseThreshhold + ")");
}
// invoke native method
Void __result__ = null;
try {
__this__.setNoiseThreshhold(mnoiseThreshhold.floatValue());
} catch (Throwable throwable) {
throwable.printStackTrace();
if (getEnableLog()) {
Log.d("Current HEAP: ", getHEAP().toString());
}
__methodResult__.error(throwable.getMessage(), null, null);
return;
}
__methodResult__.success(__result__);
});
// method
put("com.amap.api.maps.utils.PathSmoothTool::pathOptimize", (__args__, __methodResult__) -> {
// args
// ref arg
java.util.List<com.amap.api.maps.model.LatLng> originlist = (java.util.List<com.amap.api.maps.model.LatLng>) ((Map<String, Object>) __args__).get("originlist");
// ref
PathSmoothTool __this__ = (PathSmoothTool) ((Map<String, Object>) __args__).get("__this__");
// print log
if (getEnableLog()) {
Log.d("fluttify-java", "fluttify-java: com.amap.api.maps.utils.PathSmoothTool@" + __this__ + "::pathOptimize(" + originlist + ")");
}
// invoke native method
java.util.List<com.amap.api.maps.model.LatLng> __result__ = null;
try {
__result__ = __this__.pathOptimize(originlist);
} catch (Throwable throwable) {
throwable.printStackTrace();
if (getEnableLog()) {
Log.d("Current HEAP: ", getHEAP().toString());
}
__methodResult__.error(throwable.getMessage(), null, null);
return;
}
__methodResult__.success(__result__);
});
// method
put("com.amap.api.maps.utils.PathSmoothTool::kalmanFilterPath__List_com_amap_api_maps_model_LatLng_", (__args__, __methodResult__) -> {
// args
// ref arg
java.util.List<com.amap.api.maps.model.LatLng> originlist = (java.util.List<com.amap.api.maps.model.LatLng>) ((Map<String, Object>) __args__).get("originlist");
// ref
PathSmoothTool __this__ = (PathSmoothTool) ((Map<String, Object>) __args__).get("__this__");
// print log
if (getEnableLog()) {
Log.d("fluttify-java", "fluttify-java: com.amap.api.maps.utils.PathSmoothTool@" + __this__ + "::kalmanFilterPath(" + originlist + ")");
}
// invoke native method
java.util.List<com.amap.api.maps.model.LatLng> __result__ = null;
try {
__result__ = __this__.kalmanFilterPath(originlist);
} catch (Throwable throwable) {
throwable.printStackTrace();
if (getEnableLog()) {
Log.d("Current HEAP: ", getHEAP().toString());
}
__methodResult__.error(throwable.getMessage(), null, null);
return;
}
__methodResult__.success(__result__);
});
// method
put("com.amap.api.maps.utils.PathSmoothTool::removeNoisePoint", (__args__, __methodResult__) -> {
// args
// ref arg
java.util.List<com.amap.api.maps.model.LatLng> originlist = (java.util.List<com.amap.api.maps.model.LatLng>) ((Map<String, Object>) __args__).get("originlist");
// ref
PathSmoothTool __this__ = (PathSmoothTool) ((Map<String, Object>) __args__).get("__this__");
// print log
if (getEnableLog()) {
Log.d("fluttify-java", "fluttify-java: com.amap.api.maps.utils.PathSmoothTool@" + __this__ + "::removeNoisePoint(" + originlist + ")");
}
// invoke native method
java.util.List<com.amap.api.maps.model.LatLng> __result__ = null;
try {
__result__ = __this__.removeNoisePoint(originlist);
} catch (Throwable throwable) {
throwable.printStackTrace();
if (getEnableLog()) {
Log.d("Current HEAP: ", getHEAP().toString());
}
__methodResult__.error(throwable.getMessage(), null, null);
return;
}
__methodResult__.success(__result__);
});
// method
put("com.amap.api.maps.utils.PathSmoothTool::kalmanFilterPoint__com_amap_api_maps_model_LatLng__com_amap_api_maps_model_LatLng", (__args__, __methodResult__) -> {
// args
// ref arg
com.amap.api.maps.model.LatLng lastLoc = (com.amap.api.maps.model.LatLng) ((Map<String, Object>) __args__).get("lastLoc");
// ref arg
com.amap.api.maps.model.LatLng curLoc = (com.amap.api.maps.model.LatLng) ((Map<String, Object>) __args__).get("curLoc");
// ref
PathSmoothTool __this__ = (PathSmoothTool) ((Map<String, Object>) __args__).get("__this__");
// print log
if (getEnableLog()) {
Log.d("fluttify-java", "fluttify-java: com.amap.api.maps.utils.PathSmoothTool@" + __this__ + "::kalmanFilterPoint(" + lastLoc + curLoc + ")");
}
// invoke native method
com.amap.api.maps.model.LatLng __result__ = null;
try {
__result__ = __this__.kalmanFilterPoint(lastLoc, curLoc);
} catch (Throwable throwable) {
throwable.printStackTrace();
if (getEnableLog()) {
Log.d("Current HEAP: ", getHEAP().toString());
}
__methodResult__.error(throwable.getMessage(), null, null);
return;
}
__methodResult__.success(__result__);
});
// method
put("com.amap.api.maps.utils.PathSmoothTool::reducerVerticalThreshold__List_com_amap_api_maps_model_LatLng_", (__args__, __methodResult__) -> {
// args
// ref arg
java.util.List<com.amap.api.maps.model.LatLng> inPoints = (java.util.List<com.amap.api.maps.model.LatLng>) ((Map<String, Object>) __args__).get("inPoints");
// ref
PathSmoothTool __this__ = (PathSmoothTool) ((Map<String, Object>) __args__).get("__this__");
// print log
if (getEnableLog()) {
Log.d("fluttify-java", "fluttify-java: com.amap.api.maps.utils.PathSmoothTool@" + __this__ + "::reducerVerticalThreshold(" + inPoints + ")");
}
// invoke native method
java.util.List<com.amap.api.maps.model.LatLng> __result__ = null;
try {
__result__ = __this__.reducerVerticalThreshold(inPoints);
} catch (Throwable throwable) {
throwable.printStackTrace();
if (getEnableLog()) {
Log.d("Current HEAP: ", getHEAP().toString());
}
__methodResult__.error(throwable.getMessage(), null, null);
return;
}
__methodResult__.success(__result__);
});
// method
put("com.amap.api.maps.utils.PathSmoothTool::getIntensity", (__args__, __methodResult__) -> {
// args
// ref
PathSmoothTool __this__ = (PathSmoothTool) ((Map<String, Object>) __args__).get("__this__");
// print log
if (getEnableLog()) {
Log.d("fluttify-java", "fluttify-java: com.amap.api.maps.utils.PathSmoothTool@" + __this__ + "::getIntensity(" + "" + ")");
}
// invoke native method
Integer __result__ = null;
try {
__result__ = __this__.getIntensity();
} catch (Throwable throwable) {
throwable.printStackTrace();
if (getEnableLog()) {
Log.d("Current HEAP: ", getHEAP().toString());
}
__methodResult__.error(throwable.getMessage(), null, null);
return;
}
__methodResult__.success(__result__);
});
// factory
put("ObjectFactory::createcom_amap_api_maps_utils_PathSmoothTool__", (__args__, __methodResult__) -> {
if (getEnableLog()) {
Log.d("ObjectFactory", "创建对象: com_amap_api_maps_utils_PathSmoothTool__");
}
// args
// create target object
PathSmoothTool __obj__ = new PathSmoothTool();
// print current HEAP
if (getEnableLog()) {
Log.d("ObjectFactory", "HEAP: " + getHEAP());
}
__methodResult__.success(__obj__);
});
// method
put("com.amap.api.maps.utils.PathSmoothTool::getIntensity_batch", (__argsBatch__, __methodResult__) -> {
List<Integer> __resultList__ = new ArrayList<>();
for (int __i__ = 0; __i__ < ((List<Map<String, Object>>) __argsBatch__).size(); __i__++) {
Map<String, Object> __args__ = ((List<Map<String, Object>>) __argsBatch__).get(__i__);
// args
// ref
PathSmoothTool __this__ = (PathSmoothTool) ((Map<String, Object>) __args__).get("__this__");
// invoke native method
Integer __result__ = null;
try {
__result__ = __this__.getIntensity();
} catch (Throwable throwable) {
throwable.printStackTrace();
if (getEnableLog()) {
Log.d("Current HEAP: ", getHEAP().toString());
}
__methodResult__.error(throwable.getMessage(), null, null);
return;
}
__resultList__.add(__result__);
}
__methodResult__.success(__resultList__);
});
// method
put("com.amap.api.maps.utils.PathSmoothTool::setIntensity_batch", (__argsBatch__, __methodResult__) -> {
List<Void> __resultList__ = new ArrayList<>();
for (int __i__ = 0; __i__ < ((List<Map<String, Object>>) __argsBatch__).size(); __i__++) {
Map<String, Object> __args__ = ((List<Map<String, Object>>) __argsBatch__).get(__i__);
// args
// ref arg
Number mIntensity = (Number) ((Map<String, Object>) __args__).get("mIntensity");
// ref
PathSmoothTool __this__ = (PathSmoothTool) ((Map<String, Object>) __args__).get("__this__");
// invoke native method
Void __result__ = null;
try {
__this__.setIntensity(mIntensity.intValue());
} catch (Throwable throwable) {
throwable.printStackTrace();
if (getEnableLog()) {
Log.d("Current HEAP: ", getHEAP().toString());
}
__methodResult__.error(throwable.getMessage(), null, null);
return;
}
__resultList__.add(__result__);
}
__methodResult__.success(__resultList__);
});
// method
put("com.amap.api.maps.utils.PathSmoothTool::getThreshhold_batch", (__argsBatch__, __methodResult__) -> {
List<Float> __resultList__ = new ArrayList<>();
for (int __i__ = 0; __i__ < ((List<Map<String, Object>>) __argsBatch__).size(); __i__++) {
Map<String, Object> __args__ = ((List<Map<String, Object>>) __argsBatch__).get(__i__);
// args
// ref
PathSmoothTool __this__ = (PathSmoothTool) ((Map<String, Object>) __args__).get("__this__");
// invoke native method
Float __result__ = null;
try {
__result__ = __this__.getThreshhold();
} catch (Throwable throwable) {
throwable.printStackTrace();
if (getEnableLog()) {
Log.d("Current HEAP: ", getHEAP().toString());
}
__methodResult__.error(throwable.getMessage(), null, null);
return;
}
__resultList__.add(__result__);
}
__methodResult__.success(__resultList__);
});
// method
put("com.amap.api.maps.utils.PathSmoothTool::setThreshhold_batch", (__argsBatch__, __methodResult__) -> {
List<Void> __resultList__ = new ArrayList<>();
for (int __i__ = 0; __i__ < ((List<Map<String, Object>>) __argsBatch__).size(); __i__++) {
Map<String, Object> __args__ = ((List<Map<String, Object>>) __argsBatch__).get(__i__);
// args
// ref arg
Number mThreshhold = (Number) ((Map<String, Object>) __args__).get("mThreshhold");
// ref
PathSmoothTool __this__ = (PathSmoothTool) ((Map<String, Object>) __args__).get("__this__");
// invoke native method
Void __result__ = null;
try {
__this__.setThreshhold(mThreshhold.floatValue());
} catch (Throwable throwable) {
throwable.printStackTrace();
if (getEnableLog()) {
Log.d("Current HEAP: ", getHEAP().toString());
}
__methodResult__.error(throwable.getMessage(), null, null);
return;
}
__resultList__.add(__result__);
}
__methodResult__.success(__resultList__);
});
// method
put("com.amap.api.maps.utils.PathSmoothTool::setNoiseThreshhold_batch", (__argsBatch__, __methodResult__) -> {
List<Void> __resultList__ = new ArrayList<>();
for (int __i__ = 0; __i__ < ((List<Map<String, Object>>) __argsBatch__).size(); __i__++) {
Map<String, Object> __args__ = ((List<Map<String, Object>>) __argsBatch__).get(__i__);
// args
// ref arg
Number mnoiseThreshhold = (Number) ((Map<String, Object>) __args__).get("mnoiseThreshhold");
// ref
PathSmoothTool __this__ = (PathSmoothTool) ((Map<String, Object>) __args__).get("__this__");
// invoke native method
Void __result__ = null;
try {
__this__.setNoiseThreshhold(mnoiseThreshhold.floatValue());
} catch (Throwable throwable) {
throwable.printStackTrace();
if (getEnableLog()) {
Log.d("Current HEAP: ", getHEAP().toString());
}
__methodResult__.error(throwable.getMessage(), null, null);
return;
}
__resultList__.add(__result__);
}
__methodResult__.success(__resultList__);
});
// method
put("com.amap.api.maps.utils.PathSmoothTool::pathOptimize_batch", (__argsBatch__, __methodResult__) -> {
List<java.util.List<com.amap.api.maps.model.LatLng>> __resultList__ = new ArrayList<>();
for (int __i__ = 0; __i__ < ((List<Map<String, Object>>) __argsBatch__).size(); __i__++) {
Map<String, Object> __args__ = ((List<Map<String, Object>>) __argsBatch__).get(__i__);
// args
// ref arg
java.util.List<com.amap.api.maps.model.LatLng> originlist = (java.util.List<com.amap.api.maps.model.LatLng>) ((Map<String, Object>) __args__).get("originlist");
// ref
PathSmoothTool __this__ = (PathSmoothTool) ((Map<String, Object>) __args__).get("__this__");
// invoke native method
java.util.List<com.amap.api.maps.model.LatLng> __result__ = null;
try {
__result__ = __this__.pathOptimize(originlist);
} catch (Throwable throwable) {
throwable.printStackTrace();
if (getEnableLog()) {
Log.d("Current HEAP: ", getHEAP().toString());
}
__methodResult__.error(throwable.getMessage(), null, null);
return;
}
__resultList__.add(__result__);
}
__methodResult__.success(__resultList__);
});
// method
put("com.amap.api.maps.utils.PathSmoothTool::kalmanFilterPath__List_com_amap_api_maps_model_LatLng__batch", (__argsBatch__, __methodResult__) -> {
List<java.util.List<com.amap.api.maps.model.LatLng>> __resultList__ = new ArrayList<>();
for (int __i__ = 0; __i__ < ((List<Map<String, Object>>) __argsBatch__).size(); __i__++) {
Map<String, Object> __args__ = ((List<Map<String, Object>>) __argsBatch__).get(__i__);
// args
// ref arg
java.util.List<com.amap.api.maps.model.LatLng> originlist = (java.util.List<com.amap.api.maps.model.LatLng>) ((Map<String, Object>) __args__).get("originlist");
// ref
PathSmoothTool __this__ = (PathSmoothTool) ((Map<String, Object>) __args__).get("__this__");
// invoke native method
java.util.List<com.amap.api.maps.model.LatLng> __result__ = null;
try {
__result__ = __this__.kalmanFilterPath(originlist);
} catch (Throwable throwable) {
throwable.printStackTrace();
if (getEnableLog()) {
Log.d("Current HEAP: ", getHEAP().toString());
}
__methodResult__.error(throwable.getMessage(), null, null);
return;
}
__resultList__.add(__result__);
}
__methodResult__.success(__resultList__);
});
// method
put("com.amap.api.maps.utils.PathSmoothTool::removeNoisePoint_batch", (__argsBatch__, __methodResult__) -> {
List<java.util.List<com.amap.api.maps.model.LatLng>> __resultList__ = new ArrayList<>();
for (int __i__ = 0; __i__ < ((List<Map<String, Object>>) __argsBatch__).size(); __i__++) {
Map<String, Object> __args__ = ((List<Map<String, Object>>) __argsBatch__).get(__i__);
// args
// ref arg
java.util.List<com.amap.api.maps.model.LatLng> originlist = (java.util.List<com.amap.api.maps.model.LatLng>) ((Map<String, Object>) __args__).get("originlist");
// ref
PathSmoothTool __this__ = (PathSmoothTool) ((Map<String, Object>) __args__).get("__this__");
// invoke native method
java.util.List<com.amap.api.maps.model.LatLng> __result__ = null;
try {
__result__ = __this__.removeNoisePoint(originlist);
} catch (Throwable throwable) {
throwable.printStackTrace();
if (getEnableLog()) {
Log.d("Current HEAP: ", getHEAP().toString());
}
__methodResult__.error(throwable.getMessage(), null, null);
return;
}
__resultList__.add(__result__);
}
__methodResult__.success(__resultList__);
});
// method
put("com.amap.api.maps.utils.PathSmoothTool::kalmanFilterPoint__com_amap_api_maps_model_LatLng__com_amap_api_maps_model_LatLng_batch", (__argsBatch__, __methodResult__) -> {
List<com.amap.api.maps.model.LatLng> __resultList__ = new ArrayList<>();
for (int __i__ = 0; __i__ < ((List<Map<String, Object>>) __argsBatch__).size(); __i__++) {
Map<String, Object> __args__ = ((List<Map<String, Object>>) __argsBatch__).get(__i__);
// args
// ref arg
com.amap.api.maps.model.LatLng lastLoc = (com.amap.api.maps.model.LatLng) ((Map<String, Object>) __args__).get("lastLoc");
// ref arg
com.amap.api.maps.model.LatLng curLoc = (com.amap.api.maps.model.LatLng) ((Map<String, Object>) __args__).get("curLoc");
// ref
PathSmoothTool __this__ = (PathSmoothTool) ((Map<String, Object>) __args__).get("__this__");
// invoke native method
com.amap.api.maps.model.LatLng __result__ = null;
try {
__result__ = __this__.kalmanFilterPoint(lastLoc, curLoc);
} catch (Throwable throwable) {
throwable.printStackTrace();
if (getEnableLog()) {
Log.d("Current HEAP: ", getHEAP().toString());
}
__methodResult__.error(throwable.getMessage(), null, null);
return;
}
__resultList__.add(__result__);
}
__methodResult__.success(__resultList__);
});
// method
put("com.amap.api.maps.utils.PathSmoothTool::reducerVerticalThreshold__List_com_amap_api_maps_model_LatLng__batch", (__argsBatch__, __methodResult__) -> {
List<List<LatLng>> __resultList__ = new ArrayList<>();
for (int __i__ = 0; __i__ < ((List<Map<String, Object>>) __argsBatch__).size(); __i__++) {
Map<String, Object> __args__ = ((List<Map<String, Object>>) __argsBatch__).get(__i__);
// args
// ref arg
java.util.List<com.amap.api.maps.model.LatLng> inPoints = (java.util.List<com.amap.api.maps.model.LatLng>) ((Map<String, Object>) __args__).get("inPoints");
// ref
PathSmoothTool __this__ = (PathSmoothTool) ((Map<String, Object>) __args__).get("__this__");
// invoke native method
java.util.List<com.amap.api.maps.model.LatLng> __result__ = null;
try {
__result__ = __this__.reducerVerticalThreshold(inPoints);
} catch (Throwable throwable) {
throwable.printStackTrace();
if (getEnableLog()) {
Log.d("Current HEAP: ", getHEAP().toString());
}
__methodResult__.error(throwable.getMessage(), null, null);
return;
}
__resultList__.add(__result__);
}
__methodResult__.success(__resultList__);
});
//endregion
}};
}
}

View File

@ -0,0 +1,301 @@
package com.amap.api.maps.utils;
import com.amap.api.maps.AMapUtils;
import com.amap.api.maps.model.LatLng;
import java.util.ArrayList;
import java.util.List;
/**
* 轨迹优化工具类
* Created by my94493 on 2017/3/31.
* <p>
* 使用方法
* <p>
* PathSmoothTool pathSmoothTool = new PathSmoothTool();
* pathSmoothTool.setIntensity(2);//设置滤波强度默认3
* List<LatLng> mList = LatpathSmoothTool.kalmanFilterPath(list);
*/
public class PathSmoothTool {
private int mIntensity = 3;
private float mThreshhold = 0.3f;
private float mNoiseThreshhold = 10;
public PathSmoothTool(){
}
public int getIntensity() {
return mIntensity;
}
public void setIntensity(int mIntensity) {
this.mIntensity = mIntensity;
}
public float getThreshhold() {
return mThreshhold;
}
public void setThreshhold(float mThreshhold) {
this.mThreshhold = mThreshhold;
}
public void setNoiseThreshhold(float mnoiseThreshhold) {
this.mNoiseThreshhold = mnoiseThreshhold;
}
/**
* 轨迹平滑优化
* @param originlist 原始轨迹list,list.size大于2
* @return 优化后轨迹list
*/
public List<LatLng> pathOptimize(List<LatLng> originlist){
List<LatLng> list = removeNoisePoint(originlist);//去噪
List<LatLng> afterList = kalmanFilterPath(list,mIntensity);//滤波
List<LatLng> pathoptimizeList = reducerVerticalThreshold(afterList,mThreshhold);//抽稀
// Log.i("MY","originlist: "+originlist.size());
// Log.i("MY","list: "+list.size());
// Log.i("MY","afterList: "+afterList.size());
// Log.i("MY","pathoptimizeList: "+pathoptimizeList.size());
return pathoptimizeList;
}
/**
* 轨迹线路滤波
* @param originlist 原始轨迹list,list.size大于2
* @return 滤波处理后的轨迹list
*/
public List<LatLng> kalmanFilterPath(List<LatLng> originlist) {
return kalmanFilterPath(originlist,mIntensity);
}
/**
* 轨迹去噪删除垂距大于20m的点
* @param originlist 原始轨迹list,list.size大于2
* @return
*/
public List<LatLng> removeNoisePoint(List<LatLng> originlist){
return reduceNoisePoint(originlist,mNoiseThreshhold);
}
/**
* 单点滤波
* @param lastLoc 上次定位点坐标
* @param curLoc 本次定位点坐标
* @return 滤波后本次定位点坐标值
*/
public LatLng kalmanFilterPoint(LatLng lastLoc, LatLng curLoc) {
return kalmanFilterPoint(lastLoc,curLoc,mIntensity);
}
/**
* 轨迹抽稀
* @param inPoints 待抽稀的轨迹list至少包含两个点删除垂距小于mThreshhold的点
* @return 抽稀后的轨迹list
*/
public List<LatLng> reducerVerticalThreshold(List<LatLng> inPoints) {
return reducerVerticalThreshold(inPoints,mThreshhold);
}
/********************************************************************************************************/
/**
* 轨迹线路滤波
* @param originlist 原始轨迹list,list.size大于2
* @param intensity 滤波强度15
* @return
*/
private List<LatLng> kalmanFilterPath(List<LatLng> originlist,int intensity) {
List<LatLng> kalmanFilterList = new ArrayList<LatLng>();
if (originlist == null || originlist.size() <= 2)
return kalmanFilterList;
initial();//初始化滤波参数
LatLng latLng = null;
LatLng lastLoc = originlist.get(0);
kalmanFilterList.add(lastLoc);
for (int i = 1; i < originlist.size(); i++) {
LatLng curLoc = originlist.get(i);
latLng = kalmanFilterPoint(lastLoc,curLoc,intensity);
if (latLng != null) {
kalmanFilterList.add(latLng);
lastLoc = latLng;
}
}
return kalmanFilterList;
}
/**
* 单点滤波
* @param lastLoc 上次定位点坐标
* @param curLoc 本次定位点坐标
* @param intensity 滤波强度15
* @return 滤波后本次定位点坐标值
*/
private LatLng kalmanFilterPoint(LatLng lastLoc, LatLng curLoc, int intensity) {
if (pdelt_x == 0 || pdelt_y == 0 ){
initial();
}
LatLng kalmanLatlng = null;
if (lastLoc == null || curLoc == null){
return kalmanLatlng;
}
if (intensity < 1){
intensity = 1;
} else if (intensity > 5){
intensity = 5;
}
for (int j = 0; j < intensity; j++){
kalmanLatlng = kalmanFilter(lastLoc.longitude,curLoc.longitude,lastLoc.latitude,curLoc.latitude);
curLoc = kalmanLatlng;
}
return kalmanLatlng;
}
/***************************卡尔曼滤波开始********************************/
private double lastLocation_x; //上次位置
private double currentLocation_x;//这次位置
private double lastLocation_y; //上次位置
private double currentLocation_y;//这次位置
private double estimate_x; //修正后数据
private double estimate_y; //修正后数据
private double pdelt_x; //自预估偏差
private double pdelt_y; //自预估偏差
private double mdelt_x; //上次模型偏差
private double mdelt_y; //上次模型偏差
private double gauss_x; //高斯噪音偏差
private double gauss_y; //高斯噪音偏差
private double kalmanGain_x; //卡尔曼增益
private double kalmanGain_y; //卡尔曼增益
private double m_R= 0;
private double m_Q= 0;
//初始模型
private void initial(){
pdelt_x = 0.001;
pdelt_y = 0.001;
// mdelt_x = 0;
// mdelt_y = 0;
mdelt_x = 5.698402909980532E-4;
mdelt_y = 5.698402909980532E-4;
}
private LatLng kalmanFilter(double oldValue_x, double value_x, double oldValue_y, double value_y){
lastLocation_x = oldValue_x;
currentLocation_x= value_x;
gauss_x = Math.sqrt(pdelt_x * pdelt_x + mdelt_x * mdelt_x)+m_Q; //计算高斯噪音偏差
kalmanGain_x = Math.sqrt((gauss_x * gauss_x)/(gauss_x * gauss_x + pdelt_x * pdelt_x)) +m_R; //计算卡尔曼增益
estimate_x = kalmanGain_x * (currentLocation_x - lastLocation_x) + lastLocation_x; //修正定位点
mdelt_x = Math.sqrt((1-kalmanGain_x) * gauss_x *gauss_x); //修正模型偏差
lastLocation_y = oldValue_y;
currentLocation_y = value_y;
gauss_y = Math.sqrt(pdelt_y * pdelt_y + mdelt_y * mdelt_y)+m_Q; //计算高斯噪音偏差
kalmanGain_y = Math.sqrt((gauss_y * gauss_y)/(gauss_y * gauss_y + pdelt_y * pdelt_y)) +m_R; //计算卡尔曼增益
estimate_y = kalmanGain_y * (currentLocation_y - lastLocation_y) + lastLocation_y; //修正定位点
mdelt_y = Math.sqrt((1-kalmanGain_y) * gauss_y * gauss_y); //修正模型偏差
LatLng latlng = new LatLng(estimate_y,estimate_x);
return latlng;
}
/***************************卡尔曼滤波结束**********************************/
/***************************抽稀算法*************************************/
private List<LatLng> reducerVerticalThreshold(List<LatLng> inPoints,
float threshHold) {
if (inPoints == null) {
return null;
}
if (inPoints.size() <= 2) {
return inPoints;
}
List<LatLng> ret = new ArrayList<LatLng>();
for (int i = 0; i < inPoints.size(); i++) {
LatLng pre = getLastLocation(ret);
LatLng cur = inPoints.get(i);
if (pre == null || i == inPoints.size() - 1) {
ret.add(cur);
continue;
}
LatLng next = inPoints.get(i + 1);
double distance = calculateDistanceFromPoint(cur, pre, next);
if (distance > threshHold){
ret.add(cur);
}
}
return ret;
}
private static LatLng getLastLocation(List<LatLng> oneGraspList) {
if (oneGraspList == null || oneGraspList.size() == 0) {
return null;
}
int locListSize = oneGraspList.size();
LatLng lastLocation = oneGraspList.get(locListSize - 1);
return lastLocation;
}
/**
* 计算当前点到线的垂线距离
* @param p 当前点
* @param lineBegin 线的起点
* @param lineEnd 线的终点
*
*/
private static double calculateDistanceFromPoint(LatLng p, LatLng lineBegin,
LatLng lineEnd) {
double A = p.longitude - lineBegin.longitude;
double B = p.latitude - lineBegin.latitude;
double C = lineEnd.longitude - lineBegin.longitude;
double D = lineEnd.latitude - lineBegin.latitude;
double dot = A * C + B * D;
double len_sq = C * C + D * D;
double param = dot / len_sq;
double xx, yy;
if (param < 0 || (lineBegin.longitude == lineEnd.longitude
&& lineBegin.latitude == lineEnd.latitude)) {
xx = lineBegin.longitude;
yy = lineBegin.latitude;
// return -1;
} else if (param > 1) {
xx = lineEnd.longitude;
yy = lineEnd.latitude;
// return -1;
} else {
xx = lineBegin.longitude + param * C;
yy = lineBegin.latitude + param * D;
}
return AMapUtils.calculateLineDistance(p,new LatLng(yy,xx));
}
/***************************抽稀算法结束*********************************/
private List<LatLng> reduceNoisePoint(List<LatLng> inPoints, float threshHold) {
if (inPoints == null) {
return null;
}
if (inPoints.size() <= 2) {
return inPoints;
}
List<LatLng> ret = new ArrayList<LatLng>();
for (int i = 0; i < inPoints.size(); i++) {
LatLng pre = getLastLocation(ret);
LatLng cur = inPoints.get(i);
if (pre == null || i == inPoints.size() - 1) {
ret.add(cur);
continue;
}
LatLng next = inPoints.get(i + 1);
double distance = calculateDistanceFromPoint(cur, pre, next);
if (distance < threshHold){
ret.add(cur);
}
}
return ret;
}
}

View File

@ -0,0 +1,32 @@
package me.yohom.amap_map_fluttify.sub_handler.custom.tile_provider;
import android.util.Log;
import com.amap.api.maps.model.UrlTileProvider;
import java.net.URL;
public class UrlTileProviderImpl extends UrlTileProvider {
public UrlTileProviderImpl(int width, int height, String urlTemplate) {
super(width, height);
this.urlTemplate = urlTemplate;
}
final String urlTemplate;
@Override
public URL getTileUrl(int x, int y, int zoom) {
try {
final String url = urlTemplate
.replace("{x}", String.valueOf(x))
.replace("{y}", String.valueOf(y))
.replace("{scale}", String.valueOf(zoom));
Log.d("瓦片地址", url);
return new URL(url);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}

43
example/.gitignore vendored Normal file
View File

@ -0,0 +1,43 @@
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
migrate_working_dir/
# IntelliJ related
*.iml
*.ipr
*.iws
.idea/
# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/
# Flutter/Dart/Pub related
**/doc/api/
**/ios/Flutter/.last_build_id
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.pub-cache/
.pub/
/build/
# Symbolication related
app.*.symbols
# Obfuscation related
app.*.map.json
# Android Studio will place build artifacts here
/android/app/debug
/android/app/profile
/android/app/release

16
example/README.md Normal file
View File

@ -0,0 +1,16 @@
# amap_map_fluttify_example
Demonstrates how to use the amap_map_fluttify plugin.
## Getting Started
This project is a starting point for a Flutter application.
A few resources to get you started if this is your first Flutter project:
- [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab)
- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook)
For help getting started with Flutter, view our
[online documentation](https://flutter.dev/docs), which offers tutorials,
samples, guidance on mobile development, and a full API reference.

View File

@ -0,0 +1,29 @@
# This file configures the analyzer, which statically analyzes Dart code to
# check for errors, warnings, and lints.
#
# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
# invoked from the command line by running `flutter analyze`.
# The following line activates a set of recommended lints for Flutter apps,
# packages, and plugins designed to encourage good coding practices.
include: package:flutter_lints/flutter.yaml
linter:
# The lint rules applied to this project can be customized in the
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
# included above or to enable additional rules. A list of all available lints
# and their documentation is published at
# https://dart-lang.github.io/linter/lints/index.html.
#
# Instead of disabling a lint rule for the entire project in the
# section below, it can also be suppressed for a single line of code
# or a specific dart file by using the `// ignore: name_of_lint` and
# `// ignore_for_file: name_of_lint` syntax on the line or in the file
# producing the lint.
rules:
# avoid_print: false # Uncomment to disable the `avoid_print` rule
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
# Additional information about this file can be found at
# https://dart.dev/guides/language/analysis-options

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,2 @@
#Sat Nov 16 18:29:24 CST 2024
gradle.version=7.4

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,78 @@
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
apply plugin: 'com.android.application'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
compileSdkVersion 34
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
lintOptions {
disable 'InvalidPackage'
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "me.yohom.amap_map_fluttify_example"
minSdkVersion 21
targetSdkVersion 28
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
signingConfigs {
release {
keyAlias 'amap_map_test'
keyPassword 'amap_map_test'
storeFile file('../amap_map_test.jks')
storePassword 'amap_map_test'
}
}
buildTypes {
debug {
signingConfig signingConfigs.release
}
profile {
signingConfig signingConfigs.release
}
release {
signingConfig signingConfigs.release
}
}
}
flutter {
source '../..'
}
dependencies {
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
}

View File

@ -0,0 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="me.yohom.amap_map_fluttify_example">
<!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>

View File

@ -0,0 +1,31 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="me.yohom.amap_map_fluttify_example">
<!-- io.flutter.app.FlutterApplication is an android.app.Application that
calls FlutterMain.startInitialization(this); in its onCreate method.
In most cases you can leave this as-is, but you if you want to provide
additional functionality it is fine to subclass or reimplement
FlutterApplication and put your custom class here. -->
<application
android:name="${applicationName}"
android:label="amap_map_fluttify_example"
android:icon="@mipmap/ic_launcher">
<meta-data android:name="com.amap.api.v2.apikey" android:value="7c9daac55e90a439f7b4304b465297fa"/>
<activity
android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
</manifest>

View File

@ -0,0 +1,79 @@
package io.flutter.plugins;
import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import io.flutter.Log;
import io.flutter.embedding.engine.FlutterEngine;
/**
* Generated file. Do not edit.
* This file is generated by the Flutter tool based on the
* plugins that support the Android platform.
*/
@Keep
public final class GeneratedPluginRegistrant {
private static final String TAG = "GeneratedPluginRegistrant";
public static void registerWith(@NonNull FlutterEngine flutterEngine) {
try {
flutterEngine.getPlugins().add(new me.yohom.amap_core_fluttify.AmapCoreFluttifyPlugin());
} catch (Exception e) {
Log.e(TAG, "Error registering plugin amap_core_fluttify, me.yohom.amap_core_fluttify.AmapCoreFluttifyPlugin", e);
}
try {
flutterEngine.getPlugins().add(new me.yohom.amap_location_fluttify.AmapLocationFluttifyPlugin());
} catch (Exception e) {
Log.e(TAG, "Error registering plugin amap_location_fluttify, me.yohom.amap_location_fluttify.AmapLocationFluttifyPlugin", e);
}
try {
flutterEngine.getPlugins().add(new me.yohom.amap_map_fluttify.AmapMapFluttifyPlugin());
} catch (Exception e) {
Log.e(TAG, "Error registering plugin amap_map_fluttify, me.yohom.amap_map_fluttify.AmapMapFluttifyPlugin", e);
}
try {
flutterEngine.getPlugins().add(new me.yohom.amap_search_fluttify.AmapSearchFluttifyPlugin());
} catch (Exception e) {
Log.e(TAG, "Error registering plugin amap_search_fluttify, me.yohom.amap_search_fluttify.AmapSearchFluttifyPlugin", e);
}
try {
flutterEngine.getPlugins().add(new me.yohom.core_location_fluttify.CoreLocationFluttifyPlugin());
} catch (Exception e) {
Log.e(TAG, "Error registering plugin core_location_fluttify, me.yohom.core_location_fluttify.CoreLocationFluttifyPlugin", e);
}
try {
flutterEngine.getPlugins().add(new me.yohom.foundation_fluttify.FoundationFluttifyPlugin());
} catch (Exception e) {
Log.e(TAG, "Error registering plugin foundation_fluttify, me.yohom.foundation_fluttify.FoundationFluttifyPlugin", e);
}
try {
flutterEngine.getPlugins().add(new io.flutter.plugins.pathprovider.PathProviderPlugin());
} catch (Exception e) {
Log.e(TAG, "Error registering plugin path_provider_android, io.flutter.plugins.pathprovider.PathProviderPlugin", e);
}
try {
flutterEngine.getPlugins().add(new com.baseflow.permissionhandler.PermissionHandlerPlugin());
} catch (Exception e) {
Log.e(TAG, "Error registering plugin permission_handler_android, com.baseflow.permissionhandler.PermissionHandlerPlugin", e);
}
try {
flutterEngine.getPlugins().add(new dev.fluttercommunity.plus.share.SharePlusPlugin());
} catch (Exception e) {
Log.e(TAG, "Error registering plugin share_plus, dev.fluttercommunity.plus.share.SharePlusPlugin", e);
}
try {
flutterEngine.getPlugins().add(new io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin());
} catch (Exception e) {
Log.e(TAG, "Error registering plugin shared_preferences_android, io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin", e);
}
try {
flutterEngine.getPlugins().add(new com.tekartik.sqflite.SqflitePlugin());
} catch (Exception e) {
Log.e(TAG, "Error registering plugin sqflite, com.tekartik.sqflite.SqflitePlugin", e);
}
try {
flutterEngine.getPlugins().add(new io.flutter.plugins.urllauncher.UrlLauncherPlugin());
} catch (Exception e) {
Log.e(TAG, "Error registering plugin url_launcher_android, io.flutter.plugins.urllauncher.UrlLauncherPlugin", e);
}
}
}

View File

@ -0,0 +1,13 @@
package me.yohom.amap_map_fluttify_example;
import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.plugins.GeneratedPluginRegistrant;
public class MainActivity extends FlutterActivity {
@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
}
}

View File

@ -0,0 +1,6 @@
package me.yohom.example;
import io.flutter.embedding.android.FlutterActivity;
public class MainActivity extends FlutterActivity {
}

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="?android:colorBackground" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 721 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
Flutter draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
</resources>

View File

@ -0,0 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="me.yohom.amap_map_fluttify_example">
<!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>

View File

@ -0,0 +1,31 @@
buildscript {
repositories {
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
mavenCentral()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.1.2'
}
}
allprojects {
repositories {
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
mavenCentral()
google()
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
tasks.register("clean", Delete) {
delete rootProject.buildDir
}

View File

@ -0,0 +1,4 @@
org.gradle.jvmargs=-Xmx1536M
android.enableR8=true
android.useAndroidX=true
android.enableJetifier=true

Binary file not shown.

View File

@ -0,0 +1,6 @@
#Fri Jun 23 08:50:38 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip

160
example/android/gradlew vendored Normal file
View File

@ -0,0 +1,160 @@
#!/usr/bin/env bash
##############################################################################
##
## Gradle start up script for UN*X
##
##############################################################################
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
warn ( ) {
echo "$*"
}
die ( ) {
echo
echo "$*"
echo
exit 1
}
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
esac
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin, switch paths to Windows format before running java
if $cygwin ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=$((i+1))
done
case $i in
(0) set -- ;;
(1) set -- "$args0" ;;
(2) set -- "$args0" "$args1" ;;
(3) set -- "$args0" "$args1" "$args2" ;;
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
function splitJvmOpts() {
JVM_OPTS=("$@")
}
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"

90
example/android/gradlew.bat vendored Normal file
View File

@ -0,0 +1,90 @@
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto init
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:init
@rem Get command-line arguments, handling Windowz variants
if not "%OS%" == "Windows_NT" goto win9xME_args
if "%@eval[2+2]" == "4" goto 4NT_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
goto execute
:4NT_args
@rem Get arguments from the 4NT Shell from JP Software
set CMD_LINE_ARGS=%$
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega

View File

@ -0,0 +1,3 @@
sdk.dir=C:\\Users\\Administrator\\AppData\\Local\\Android\\sdk
flutter.sdk=D:\\futter\\flutter
flutter.buildMode=debug

View File

@ -0,0 +1,15 @@
include ':app'
def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
def plugins = new Properties()
def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
if (pluginsFile.exists()) {
pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
}
plugins.each { name, path ->
def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
include ":$name"
project(":$name").projectDir = pluginDirectory
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
example/images/arrow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 994 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>App</string>
<key>CFBundleIdentifier</key>
<string>io.flutter.flutter.app</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>App</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>MinimumOSVersion</key>
<string>9.0</string>
</dict>
</plist>

View File

@ -0,0 +1,2 @@
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
#include "Generated.xcconfig"

View File

@ -0,0 +1,14 @@
// This is a generated file; do not edit or check into version control.
FLUTTER_ROOT=D:\futter\flutter
FLUTTER_APPLICATION_PATH=D:\FlutterProjects\flutter_amap\amap_map_fluttify\example
COCOAPODS_PARALLEL_CODE_SIGN=true
FLUTTER_TARGET=lib\main.dart
FLUTTER_BUILD_DIR=build
FLUTTER_BUILD_NAME=1.0.0
FLUTTER_BUILD_NUMBER=1
EXCLUDED_ARCHS[sdk=iphonesimulator*]=i386
EXCLUDED_ARCHS[sdk=iphoneos*]=armv7
DART_OBFUSCATION=false
TRACK_WIDGET_CREATION=true
TREE_SHAKE_ICONS=false
PACKAGE_CONFIG=.dart_tool/package_config.json

View File

@ -0,0 +1,2 @@
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "Generated.xcconfig"

View File

@ -0,0 +1,13 @@
#!/bin/sh
# This is a generated file; do not edit or check into version control.
export "FLUTTER_ROOT=D:\futter\flutter"
export "FLUTTER_APPLICATION_PATH=D:\FlutterProjects\flutter_amap\amap_map_fluttify\example"
export "COCOAPODS_PARALLEL_CODE_SIGN=true"
export "FLUTTER_TARGET=lib\main.dart"
export "FLUTTER_BUILD_DIR=build"
export "FLUTTER_BUILD_NAME=1.0.0"
export "FLUTTER_BUILD_NUMBER=1"
export "DART_OBFUSCATION=false"
export "TRACK_WIDGET_CREATION=true"
export "TREE_SHAKE_ICONS=false"
export "PACKAGE_CONFIG=.dart_tool/package_config.json"

41
example/ios/Podfile Normal file
View File

@ -0,0 +1,41 @@
source 'https://gitee.com/mirrors/CocoaPods-Specs.git' # 指定源
# Uncomment this line to define a global platform for your project
platform :ios, '11.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
project 'Runner', {
'Debug' => :debug,
'Profile' => :release,
'Release' => :release,
}
def flutter_root
generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
unless File.exist?(generated_xcode_build_settings_path)
raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
end
File.foreach(generated_xcode_build_settings_path) do |line|
matches = line.match(/FLUTTER_ROOT\=(.*)/)
return matches[1].strip if matches
end
raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
end
require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
flutter_ios_podfile_setup
target 'Runner' do
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
end
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
end
end

109
example/ios/Podfile.lock Normal file
View File

@ -0,0 +1,109 @@
PODS:
- AMap3DMap-NO-IDFA (9.2.1):
- AMapFoundation-NO-IDFA (~> 1.6.9)
- amap_core_fluttify (0.0.1):
- AMapFoundation-NO-IDFA (~> 1.6.9)
- Flutter
- foundation_fluttify
- amap_location_fluttify (0.0.1):
- AMapLocation-NO-IDFA (= 2.8.0)
- Flutter
- foundation_fluttify
- amap_map_fluttify (0.0.1):
- AMap3DMap-NO-IDFA (= 9.2.1)
- Flutter
- foundation_fluttify
- amap_search_fluttify (0.0.1):
- AMapSearch-NO-IDFA (= 9.2.0)
- Flutter
- foundation_fluttify
- AMapFoundation-NO-IDFA (1.6.9)
- AMapLocation-NO-IDFA (2.8.0):
- AMapFoundation-NO-IDFA (~> 1.6.9)
- AMapSearch-NO-IDFA (9.2.0):
- AMapFoundation-NO-IDFA (~> 1.6.9)
- core_location_fluttify (0.0.1):
- Flutter
- foundation_fluttify
- Flutter (1.0.0)
- FMDB (2.7.5):
- FMDB/standard (= 2.7.5)
- FMDB/standard (2.7.5)
- foundation_fluttify (0.0.1):
- Flutter
- path_provider_ios (0.0.1):
- Flutter
- permission_handler_apple (9.0.4):
- Flutter
- sqflite (0.0.2):
- Flutter
- FMDB (>= 2.7.5)
- url_launcher_ios (0.0.1):
- Flutter
DEPENDENCIES:
- amap_core_fluttify (from `.symlinks/plugins/amap_core_fluttify/ios`)
- amap_location_fluttify (from `.symlinks/plugins/amap_location_fluttify/ios`)
- amap_map_fluttify (from `.symlinks/plugins/amap_map_fluttify/ios`)
- amap_search_fluttify (from `.symlinks/plugins/amap_search_fluttify/ios`)
- core_location_fluttify (from `.symlinks/plugins/core_location_fluttify/ios`)
- Flutter (from `Flutter`)
- foundation_fluttify (from `.symlinks/plugins/foundation_fluttify/ios`)
- path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`)
- permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
- sqflite (from `.symlinks/plugins/sqflite/ios`)
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
SPEC REPOS:
https://gitee.com/mirrors/CocoaPods-Specs.git:
- AMap3DMap-NO-IDFA
- AMapFoundation-NO-IDFA
- AMapLocation-NO-IDFA
- AMapSearch-NO-IDFA
- FMDB
EXTERNAL SOURCES:
amap_core_fluttify:
:path: ".symlinks/plugins/amap_core_fluttify/ios"
amap_location_fluttify:
:path: ".symlinks/plugins/amap_location_fluttify/ios"
amap_map_fluttify:
:path: ".symlinks/plugins/amap_map_fluttify/ios"
amap_search_fluttify:
:path: ".symlinks/plugins/amap_search_fluttify/ios"
core_location_fluttify:
:path: ".symlinks/plugins/core_location_fluttify/ios"
Flutter:
:path: Flutter
foundation_fluttify:
:path: ".symlinks/plugins/foundation_fluttify/ios"
path_provider_ios:
:path: ".symlinks/plugins/path_provider_ios/ios"
permission_handler_apple:
:path: ".symlinks/plugins/permission_handler_apple/ios"
sqflite:
:path: ".symlinks/plugins/sqflite/ios"
url_launcher_ios:
:path: ".symlinks/plugins/url_launcher_ios/ios"
SPEC CHECKSUMS:
AMap3DMap-NO-IDFA: 6660036f9a8c28ed3e9037936210121599055a2e
amap_core_fluttify: b84657ba39ee287a4b96bbcc0a6e67612cc3808f
amap_location_fluttify: 7dc366b959d3ea9ce0b826e60c22a15cec54bbad
amap_map_fluttify: 4eaf28184c3cac71f7cf1fb2799c919886792ca8
amap_search_fluttify: cfab91aa65730337fff54705aae0423ea752fc91
AMapFoundation-NO-IDFA: cc2ec7a2828ef292358ad594b7ee0ae21a7f097b
AMapLocation-NO-IDFA: 9d7ec9b052405356600b59fe0a9a65261bacc54e
AMapSearch-NO-IDFA: 9df378c88d50083346412ee3e0a10e2c451c7139
core_location_fluttify: 9466a411ea7d22c6349c7e6a767ae4623f01eb1d
Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
foundation_fluttify: 0c45145e3fad1fb99188e4979daed5b24cd9b278
path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02
permission_handler_apple: 44366e37eaf29454a1e7b1b7d736c2cceaeb17ce
sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904
url_launcher_ios: 839c58cdb4279282219f5e248c3321761ff3c4de
PODFILE CHECKSUM: b71e6afb316c858200a12fa02b726271202c35b1
COCOAPODS: 1.11.3

View File

@ -0,0 +1,574 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 51;
objects = {
/* Begin PBXBuildFile section */
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
2E987CBF65CB9807E616DA4A /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AED2D95FA5A8A5AC1F3352DF /* libPods-Runner.a */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; };
97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
9705A1C41CF9048500538489 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
38D2F0E1743402F04112B2F3 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
4754B7ABAFA0175E36343862 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
97C146F21CF9000F007C117D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
97E67887DE064854CE7FC98C /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
AED2D95FA5A8A5AC1F3352DF /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
97C146EB1CF9000F007C117D /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
2E987CBF65CB9807E616DA4A /* libPods-Runner.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
4DEC0FC1B2A6D9BE9CE171BE /* Pods */ = {
isa = PBXGroup;
children = (
4754B7ABAFA0175E36343862 /* Pods-Runner.debug.xcconfig */,
38D2F0E1743402F04112B2F3 /* Pods-Runner.release.xcconfig */,
97E67887DE064854CE7FC98C /* Pods-Runner.profile.xcconfig */,
);
path = Pods;
sourceTree = "<group>";
};
9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup;
children = (
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
9740EEB21CF90195004384FC /* Debug.xcconfig */,
7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
9740EEB31CF90195004384FC /* Generated.xcconfig */,
);
name = Flutter;
sourceTree = "<group>";
};
97C146E51CF9000F007C117D = {
isa = PBXGroup;
children = (
9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */,
4DEC0FC1B2A6D9BE9CE171BE /* Pods */,
DEA5F138AC22DEF4139EF3E8 /* Frameworks */,
);
sourceTree = "<group>";
};
97C146EF1CF9000F007C117D /* Products */ = {
isa = PBXGroup;
children = (
97C146EE1CF9000F007C117D /* Runner.app */,
);
name = Products;
sourceTree = "<group>";
};
97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup;
children = (
7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */,
7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */,
97C146FA1CF9000F007C117D /* Main.storyboard */,
97C146FD1CF9000F007C117D /* Assets.xcassets */,
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
97C147021CF9000F007C117D /* Info.plist */,
97C146F11CF9000F007C117D /* Supporting Files */,
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
);
path = Runner;
sourceTree = "<group>";
};
97C146F11CF9000F007C117D /* Supporting Files */ = {
isa = PBXGroup;
children = (
97C146F21CF9000F007C117D /* main.m */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
DEA5F138AC22DEF4139EF3E8 /* Frameworks */ = {
isa = PBXGroup;
children = (
AED2D95FA5A8A5AC1F3352DF /* libPods-Runner.a */,
);
name = Frameworks;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
97C146ED1CF9000F007C117D /* Runner */ = {
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
1C76B54171420F638C4E833E /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
55549DA0E047488D00BF68DD /* [CP] Copy Pods Resources */,
);
buildRules = (
);
dependencies = (
);
name = Runner;
productName = Runner;
productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1300;
ORGANIZATIONNAME = "";
TargetAttributes = {
97C146ED1CF9000F007C117D = {
CreatedOnToolsVersion = 7.3.1;
};
};
};
buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
compatibilityVersion = "Xcode 9.3";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 97C146E51CF9000F007C117D;
productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
97C146ED1CF9000F007C117D /* Runner */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
97C146EC1CF9000F007C117D /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
1C76B54171420F638C4E833E /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Thin Binary";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
};
55549DA0E047488D00BF68DD /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Copy Pods Resources";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
showEnvVarsInLog = 0;
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Run Script";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
97C146EA1CF9000F007C117D /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */,
97C146F31CF9000F007C117D /* main.m in Sources */,
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXVariantGroup section */
97C146FA1CF9000F007C117D /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
97C146FB1CF9000F007C117D /* Base */,
);
name = Main.storyboard;
sourceTree = "<group>";
};
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
isa = PBXVariantGroup;
children = (
97C147001CF9000F007C117D /* Base */,
);
name = LaunchScreen.storyboard;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
249021D3217E4FDB00AE95B9 /* Profile */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = Profile;
};
249021D4217E4FDB00AE95B9 /* Profile */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = X5P24RK5QW;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
PRODUCT_BUNDLE_IDENTIFIER = "me.yohom.amapMapFluttifyExample-test";
PRODUCT_NAME = "$(TARGET_NAME)";
VERSIONING_SYSTEM = "apple-generic";
};
name = Profile;
};
97C147031CF9000F007C117D /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
97C147041CF9000F007C117D /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
97C147061CF9000F007C117D /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = X5P24RK5QW;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
PRODUCT_BUNDLE_IDENTIFIER = "me.yohom.amapMapFluttifyExample-test";
PRODUCT_NAME = "$(TARGET_NAME)";
VERSIONING_SYSTEM = "apple-generic";
};
name = Debug;
};
97C147071CF9000F007C117D /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = X5P24RK5QW;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
PRODUCT_BUNDLE_IDENTIFIER = "me.yohom.amapMapFluttifyExample-test";
PRODUCT_NAME = "$(TARGET_NAME)";
VERSIONING_SYSTEM = "apple-generic";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
isa = XCConfigurationList;
buildConfigurations = (
97C147031CF9000F007C117D /* Debug */,
97C147041CF9000F007C117D /* Release */,
249021D3217E4FDB00AE95B9 /* Profile */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
isa = XCConfigurationList;
buildConfigurations = (
97C147061CF9000F007C117D /* Debug */,
97C147071CF9000F007C117D /* Release */,
249021D4217E4FDB00AE95B9 /* Profile */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 97C146E61CF9000F007C117D /* Project object */;
}

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:">
</FileRef>
</Workspace>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PreviewsEnabled</key>
<false/>
</dict>
</plist>

View File

@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1300"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Profile"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:Runner.xcodeproj">
</FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
</Workspace>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PreviewsEnabled</key>
<false/>
</dict>
</plist>

View File

@ -0,0 +1,6 @@
#import <Flutter/Flutter.h>
#import <UIKit/UIKit.h>
@interface AppDelegate : FlutterAppDelegate
@end

View File

@ -0,0 +1,13 @@
#import "AppDelegate.h"
#import "GeneratedPluginRegistrant.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[GeneratedPluginRegistrant registerWithRegistry:self];
// Override point for customization after application launch.
return [super application:application didFinishLaunchingWithOptions:launchOptions];
}
@end

Some files were not shown because too many files have changed in this diff Show More