地理位置和目标点

地理位置可通过在 Android 应用程序中使用纬度和经度以及预定义的目标点,来帮助您测量位置数据。

每个 trackLocation 调用均发送以下信息:

  • 纬度、经度以及在 Adobe Mobile Services 用户界面中定义的目标点 (POI) 中的位置。

    此信息将传送给移动设备解决方案变量以实现自动报告。

  • 距中心的距离以及作为上下文数据传递的精度。

    系统不会自动捕获这些变量。您必须按照以下“发送其他数据”**​部分中的说明来映射这些上下文数据变量。

动态 POI 更新

从版本 4.2 开始,POI 可在 Adobe Mobile 用户界面中定义并动态同步到应用程序配置文件。此同步需要 ADBMobile JSON 配置中的 analytics.poi 设置:

"analytics.poi": "https://assets.adobedtm.com/…/yourfile.json",

如果未配置此设置,您必须下载更新版本的 ADBMobile.json 文件并将其添加到您的应用程序中。有关更多信息,请参阅下载 SDK 和测试工具

跟踪地理位置和 POI

  1. 将库添加到您的项目并实施生命周期。

    有关更多信息,请参阅核心实施和生命周期中的“将 SDK 和配置文件添加到您的 IntelliJ IDEA 或 Eclipse 项目”**。

  2. 导入库:

    import com.adobe.mobile.*;
    
  3. 调用 trackLocation 以跟踪当前位置:

    Location currentLocation = new Location("my location here"); 
    Analytics.trackLocation(currentLocation, null);
    
    小贴士

    您可以随时调用 trackLocation

    您可以使用位置策略来确定传递到 trackLocation 调用的位置。有关更多信息,请参阅 Android 位置策略

此外,如果确定位置位于定义的 POI 半径内,则 a.loc.poi 上下文数据变量将随 trackLocation 点击一起发送,并在​位置划分​报表中报告为 POI。另外,还将发送 a.loc.dist 上下文变量,其中包含到定义坐标的距离(以米为单位)。

发送其他数据

除了位置数据之外,您还可以通过每个跟踪位置调用发送其他上下文数据:

HashMap<String, Object> locationContextData = new HashMap<String, Object>(); 
locationContextData.put("myapp.location.LocationSource", "GPS"); 
 
Location currentLocation = new Location("my location here"); 
Analytics.trackLocation(currentLocation, locationContextData);

上下文数据值必须映射到 Adobe Mobile Services 用户界面中的自定义变量:

位置上下文数据

分别使用三个不同的上下文数据参数发送纬度和经度,其中每个参数代表不同的精度级别,因此一共有六个上下文数据参数。

例如,坐标(纬度 = 40.93231,经度 = -111.93152)代表某个位置,精度为 1 m。根据以下变量的精度级别拆分此位置:

a.loc.lat.a = 040.9

a.loc.lat.b = 32

a.loc.lat.c = 31

a.loc.lon.a = -111.9

a.loc.lon.b = 31

a.loc.lon.c = 52

根据当前位置的精确度,某些精度级别可能会显示为 00。例如,如果位置当前精确到 100 米,a.loc.lat.ca.loc.lon.c 将会填充 00

请牢记以下信息:

  • 发送 trackLocation 请求相当于调用 trackAction

  • POI 不会作为典型 trackActiontrackState 调用的一部分进行传递,因此您必须使用 trackLocation 调用来跟踪 POI。

  • 应当根据需要经常调用 trackLocation 以跟踪位置和 POI。

    我们建议在应用程序启动时调用 trackLocation,之后可根据应用程序的要求在需要时进行调用。

  • 只有在应用程序配置文件中定义 POI 后,才会填充 POI。

    POI 不适用于先前发送的历史 trackLocation 调用。

  • trackLocation 调用支持发送其他上下文数据,这一点与 trackAction 调用类似。

  • 如果有两个 POI 的直径重叠,则使用包含当前位置的第一个 POI。

    如果 POI 重叠,则应按最精细到最不精细的顺序列出 POI,以确保报告最精细的 POI。

在此页面上