最近一直在学习DELPHI安卓的开发,在网上整理了一些资料,以下内容是关于手机定位与调用腾讯地图显示定位的方法。
大纲内容如下:
1.如何获取手机定位的GPS坐标
2.纠正GPS坐标符合腾讯地图
3.在地图中显示手机的位置
4.附上GPS坐标纠正的单元文件内容
注意事项:记住要对手机的权限进行申请,至于如何申请这里不过多描述,各位看倌可以上网查资料,或者我后面单独出一篇文章详细说明安卓权限申请的问题
废话不多说,直接开干
【1.获取手机定位坐标】
以下实现方式是将获取经度和纬度分开成两个函数,详见代码内容:
首先引用必要单元:
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,GetGPSOffset,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, System.Sensors,FMX.WebBrowser,
{$IFDEF ANDROID}
Androidapi.JNI.GraphicsContentViewText,
Androidapi.JNI.JavaTypes,
FMX.Helpers.Android,
Androidapi.Helpers,
AndroidApi.Jni.App,
Androidapi.JNIBridge,
androidapi.Jni.Location,
Androidapi.JNI.Telephony;
{$ENDIF}
获取GPS经度坐标
{$REGION '获取定位坐标经度'}
function GetLatitude:Single;
var
LocationManagerService: JObject;
Location: JLocation;
fLocationManager: JLocationManager;
begin
if not assigned(fLocationManager) then
begin
//获得Java对象
LocationManagerService := sharedActivitycontext.getSystemService
(TJcontext.JavaClass.LOCATION_SERVICE);
// 获得对象的java实例
fLocationManager := tjlocationmanager.Wrap
((LocationManagerService as ILocalObject).GetObjectID);
end;
//调用Java方法
// use the gps provider to get current lat, long and altitude
Location := fLocationManager.getLastKnownLocation
(tjlocationmanager.JavaClass.GPS_PROVIDER);
Result:=location.getLatitude;
end;
{$ENDREGION}
获取GPS纬度坐标
{$REGION '获取定位坐标纬度'}
function GetLongitude:Single;
var
LocationManagerService: JObject;
Location: JLocation;
fLocationManager: JLocationManager;
begin
if not assigned(fLocationManager) then
begin
//获得Java对象
LocationManagerService := sharedActivitycontext.getSystemService
(TJcontext.JavaClass.LOCATION_SERVICE);
// 获得对象的java实例
fLocationManager := tjlocationmanager.Wrap
((LocationManagerService as ILocalObject).GetObjectID);


2万+

被折叠的 条评论
为什么被折叠?



