From e6d31669e0e353b90a8e85bc08f130520b29abf6 Mon Sep 17 00:00:00 2001 From: Prabhat Rai Date: Sat, 26 Feb 2022 17:24:28 +0530 Subject: [PATCH] Create README-zh_CN.md --- README-zh_CN.md | 335 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 335 insertions(+) create mode 100644 README-zh_CN.md diff --git a/README-zh_CN.md b/README-zh_CN.md new file mode 100644 index 0000000..1f4d156 --- /dev/null +++ b/README-zh_CN.md @@ -0,0 +1,335 @@ +# Android - EasyWayLocation +该库包含与谷歌位置相关的所有实用程序。例如,获取经纬度、地址和位置设置对话框、绘制路线等 + +[![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-EasyWayLocation-brightgreen.svg?style=flat)](https://android-arsenal.com/details/1/6880) + +## 有什么新功能 Ver 2.4 + +- 弧线绘制 + + a. 简单的 + + b. 动画. + +- 在起点和终点之间绘制弧线路线 + +- 现在,Dev 可以动态更改参数,例如起点、航点等 + +- 获取arrayList和HashMap中的折线详细信息类 + +- 使用 TAG 为弧形和航路点折线清除折线 + +- 修复重大崩溃 + +- 在示例文件夹中创建了一个曲目演示以供更多使用帮助 + +# 演示图像和 Gif: + +![IMages1](https://firebasestorage.googleapis.com/v0/b/chatapp-2e1df.appspot.com/o/location%20images%2F1.png?alt=media&token=0f7b6430-7dac-453e-879f-f0523792fb31) +![alt Setting IMages2](https://firebasestorage.googleapis.com/v0/b/chatapp-2e1df.appspot.com/o/location%20images%2F2.png?alt=media&token=a0aa40d3-2f84-4886-9579-79fdd694290d) +![alt Setting IMages3](https://firebasestorage.googleapis.com/v0/b/chatapp-2e1df.appspot.com/o/location%20images%2F3.png?alt=media&token=412a7e86-0363-4e97-bf01-e130865d015f) + +![gif1](https://firebasestorage.googleapis.com/v0/b/chatapp-2e1df.appspot.com/o/location%20images%2Faniated_forgithub.gif?alt=media&token=d17c187f-8192-4d2f-a44e-26020acfd3eb) +![gif2](https://firebasestorage.googleapis.com/v0/b/chatapp-2e1df.appspot.com/o/location%20images%2Fgif_for_github.gif?alt=media&token=060e72c1-a3fd-4090-8589-7e85ed598b0e) + + +# 先决条件 +- Android 16 +# 安装 +## Step 1:- 将其添加到存储库末尾的根 build.gradle 中: +```` +all projects { + repositories { + ... + maven { url 'https://jitpack.io' } + } + } + +```` +## Step 2:- 添加 dependency: +```` + dependencies { + implementation 'com.github.prabhat1707:EasyWayLocation:2.4' + } + +```` + +### 库使用 java 8 字节码,所以不要忘记在应用程序的 build.gradle 文件中启用 java 8。 + +```` +android { + compileOptions { + sourceCompatibility 1.8 + targetCompatibility 1.8 + } +} + +```` + +# Usage + +###### 如果设备运行 Android 6.0 或更高版本,并且您的应用的目标 SDK 为 29 或更高版本,则首先检查位置的权限,然后调用它。 + +## 添加所需的权限 +为了优越的位置 (GPS location), 在您的添加以下权限 AndroidManifest.xml: +```` + + +```` + +For coarse location (network location), add the following permission in your AndroidManifest.xml: +```` + + +```` + +# 从设备中检索位置 +```` +public class MainActivity extends AppCompatActivity implements Listener { + EasyWayLocation easyWayLocation; + private TextView location, latLong, diff; + private Double lati, longi; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + //-- + easyWayLocation = new EasyWayLocation(this, false,false,this); + } + + @Override + public void locationOn() { + Toast.makeText(this, "Location ON", Toast.LENGTH_SHORT).show(); + } + + @Override + public void currentLocation(Location location) { + StringBuilder data = new StringBuilder(); + data.append(location.getLatitude()); + data.append(" , "); + data.append(location.getLongitude()); + latLong.setText(data); + getLocationDetail.getAddress(location.getLatitude(), location.getLongitude(), "xyz"); + } + + @Override + public void locationCancelled() { + Toast.makeText(this, "Location Cancelled", Toast.LENGTH_SHORT).show(); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + switch (requestCode) { + case LOCATION_SETTING_REQUEST_CODE: + easyWayLocation.onActivityResult(resultCode); + break; + } + } + + @Override + protected void onResume() { + super.onResume(); + easyWayLocation.startLocation(); + } + + @Override + protected void onPause() { + super.onPause(); + easyWayLocation.endUpdates(); + + } +} + +```` + +# 位置通知器 + +```` +@Override + public void locationOn() { + Toast.makeText(this, "Location ON", Toast.LENGTH_SHORT).show(); + + } + + @Override + public void currentLocation(Location location){ + // give lat and long at every interval + } + + @Override + public void locationCancelled() { + // location not on + } + +```` +# 构造函数选项 + +## 要记住的要点 +- 如果您只想要最后一个位置,则将其传递为 true,如果为 false,则根据默认位置请求为您提供位置更新。 +- 如果您不通过,则它需要默认位置请求,或者您也可以通过您的位置请求(参见构造函数 2nd)。 + +```` +Context context = this; +boolean requireFineGranularity = false; +new EasyWayLocation(this, requireLastLocation = false,isDebuggable = true/false,listner = this); + +or + +request = new LocationRequest(); +request.setInterval(10000); +request.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY); + +new EasyWayLocation(this,locationRequest = request , requireLastLocation = false,isDebuggable = true/false,listner = this); + + +```` + +## 计算两点之间的距离 + +```` + +double startLatitude = 59.95; +double startLongitude = 30.3; +double endLatitude = 44.84; +double endLongitude = -0.58; +location.calculateDistance(startLatitude, startLongitude, endLatitude, endLongitude); + +// or + +Point startPoint = new EasyWayLocation.Point(59.95, 30.3); +Point endPoint = new EasyWayLocation.Point(44.84, -0.58); +location.calculateDistance(startPoint, endPoint); + +```` + +## 更新获取位置的地址详细信息。 +- if you want an address from the current location then you need to pass key and context. +- why I want key here if android already provides Geocoder because in some cases or some devices geocoder not work well and throws Exception, so in that case, I use google geocode API for fetch address. +- For this, you need to implement Callback, LocationData.AddressCallBack + +```` +GetLocationDetail getLocationDetail = new GetLocationDetail(callback = this, context = this); + +getLocationDetail.getAddress(location.getLatitude(), location.getLongitude(), key = "xyz"); + +```` + +## 谷歌地图路线 + +#### 如果您想在您的应用程序中添加地图路线功能,您可以通过添加 DirectionUtil 类将其与此库一起使用,以使您更轻松地工作。这是 lib 将帮助您绘制两点 LatLng 与航点之间的路线图。 + +## 当您的 GoogleMap 准备就绪时 + +#### 确保在谷歌开发者控制台中启用谷歌地图和谷歌地图方向。 + +#### 首先初始化Direction Util + +```` +wayPoints.add(LatLng(37.423669, -122.090168)) + wayPoints.add(LatLng(37.420930, -122.085362)) + val directionUtil = DirectionUtil.Builder() + .setDirectionKey("xyz") + .setOrigin(LatLng(37.421481, -122.092156)) + .setWayPoints(wayPoints) + .setGoogleMap(mMap) + .setPolyLinePrimaryColor(R.color.black) + .setPolyLineWidth(5) + .setPathAnimation(true) + .setCallback(this) + .setPolylineTag(WAY_POINT_TAG) + .setDestination(LatLng(37.421519, -122.086809)) + .build() + +```` + +#### 为路线绘制添加以下行 + +#### 先调用init再调用drawRoute + +```` +directionUtil.initPath() +directionUtil.drawPath(WAY_POINT_TAG) + +```` + +#### 现在从 v2.4 开始,您可以在路径之间更改原点、颜色等 + +```` + directionUtil.serOrigin(LatLng(driverCurrentLocation.latitude,driverCurrentLocation.longitude),wayPoints) + +```` + +#### 为圆弧绘制添加下面的行 + +```` +directionUtil.drawArcDirection(LatLng(37.421481, -122.092156),LatLng(37.421519, -122.086809),0.5,ARC_POINT_TAG) + +```` + +#### 添加下面的行以根据相应的TAG删除折线 + +```` +directionUtil.clearPolyline(WAY_POINT_TAG) + +```` + +# 其中有两种情况: + +- 像优步这样的动画 +- 没有动画。 + +1.带动画 + + - setPathAnimation = true + +![gif1](https://firebasestorage.googleapis.com/v0/b/chatapp-2e1df.appspot.com/o/location%20images%2Fanimation_route.gif?alt=media&token=97af3e8c-e302-41af-b93b-e8b85b47d9e7) + +2.没有动画 + + - setPathAnimation = false + - change its color by, setPolyLinePrimaryColor() property + +![gif2](https://firebasestorage.googleapis.com/v0/b/chatapp-2e1df.appspot.com/o/location%20images%2Fnormal_routw.gif?alt=media&token=76e35316-2e76-4d4d-9099-98f3f0678b34) + +## 回调 + +#### 当路由绘制路径完成时,调用下面的回调 +```` + +override fun pathFindFinish(polyLineDetails: HashMap) { + for (i in polyLineDetails.keys){ + Log.v("sample",polyLineDetails[i]?.time) + } + } + +```` + +here, polyLineDetails contain each polyline or route detail as time, distance and road summary. + +#### 您还可以更改路线动画的不同属性,如延迟、原色、次要颜色等,只需探索它即可。 + +#### 错误,功能请求 + +发现错误?缺少什么?反馈是改进项目的重要组成部分,所以,请 +open an issue + +# 执照 + +```` +版权所有 (c) + +根据 Apache 许可证 2.0 版(“许可证”)获得许可; +除非遵守许可,否则您不得使用此文件。 +您可以在以下网址获取许可证的副本 + + http://www.apache.org/licenses/LICENSE-2.0 + +除非适用法律要求 +w 或书面同意,软件 +根据许可分发是在“原样”基础上分发的, +没有任何明示或暗示的保证或条件。 +请参阅许可以了解特定语言的管理权限和 +许可证下的限制。 +````