地理位置 - 在地图上显示帐户的距离

时间:2018-06-07 12:47:43

标签: javascript geolocation salesforce visualforce apex

我已经构建了一个地理定位应用,可以在地图上显示帐户的位置。然而,为了改进和进一步,我已经决定添加一个显示"距离"该帐户的正在查看地图的人。

经过几天的研究,这是我走了多远,但我仍然无法得到它。所以,如果有人知道我做错了什么或如何使它工作,请告诉我!

我的代码:

public with sharing class AccountController {
@AuraEnabled
public static List<Account> findAll() {
return [SELECT id, name, Location__Latitude__s, Location__Longitude__s, Industry
        FROM Account
        WHERE Location__Latitude__s != NULL AND Location__Longitude__s != NULL
        LIMIT 50];
DISTANCE(GEOLOCATION(BillingLatitude , BillingLongitude ),
Account_Name__r.GeoLocation__Latitude__s , Branch_Assigned__r.GeoLocation__Longitude__s )  , 
'mi')         
}} 

非常感谢!

1 个答案:

答案 0 :(得分:0)

要做到这一点,您需要知道:

  1. 帐户的ID。 (下面的AccountId变量)
  2. 用户当前位置的纬度和经度坐标。 (下面的LatitudeLongitude变量)
    我可能会在这里补充说,您将需要一种方法来收集用户当前所在位置的纬度和经度坐标,在Web浏览器中可以使用javascript geolocation api
  3. 该信息可以输入以下查询:

    Id AccountId = '0010I00001qh9r0';
    Decimal Latitude  = 37.775;
    Decimal Longitude = -122.418;
    
    list<Account> Accounts = [ 
        SELECT Id
             , DISTANCE ( 
                 Location__c 
               , GEOLOCATION( :Latitude , :Longitude ) 
               , 'km' 
               ) Distance
        FROM Account
        WHERE Id = :AccountId
    ];
    
    for ( Account a : Accounts ) System.debug( a );
    

    这将为您提供距离:

      

    帐户:{Id = 0010I00001qh9r0QAA,距离= 1.6328418223544767}