2012-06-18 62 views

回答

2

您将无法直接通过FetchXml执行此操作,因为地址解析不作为功能提供。

这意味着您需要手动开始滚动,这并不容易。 This site对你需要做什么有一个很好的概述(即使语言与你可能用于CRM的不同)。

一种选项可放松您的要求,只需使用FetchXml寻找记录与经度+/-1.5英里纬度+/- 1.5英里(这当然查询状如方形而不是一个区域半径)。

如果您需要更严格,您可以尝试重写以下MySQL(即不是MSSQL!)查询,并将其与某种QueryExpression一起使用?因此,例如,查询表达式如上所述确定数据的粗略子集(例如,经度和纬度与中心点的距离为1.5英里),然后在返回这些结果之后,为每个结果计算它是否落在期望半径内...

SELECT id, X(gm_coor) AS latitude, Y(gm_coor) AS longitude, 
    ATAN2(
    SQRT(
     POW(COS(RADIANS(__LAT__)) * 
      SIN(RADIANS(Y(gm_coor) - __LNG__)), 2) + 
     POW(COS(RADIANS(X(gm_coor))) * SIN(RADIANS(__LAT__)) - 
      SIN(RADIANS(X(gm_coor))) * COS(RADIANS(__LAT__)) * 
      COS(RADIANS(Y(gm_coor) - __LNG__)), 2)), 
    (SIN(RADIANS(X(gm_coor))) * SIN(RADIANS(__LAT__)) + 
    COS(RADIANS(X(gm_coor))) * COS(RADIANS(__LAT__)) * 
    COS(RADIANS(Y(gm_coor) - __LNG__))) 
) * 6372.795 AS distance 
FROM geocoded 
HAVING distance < [RANGE IN KILOMETRES] 
+0

请参阅本太:http://www.codeproject.com/Articles/32806/GeoLocation-by-Radius-Using-Google-Maps-and-NET –

0

我能想到的两种选择断手

1)使用SQL里面的过滤视图和计算大圆距离公式。这是最干净的方式,但不是取回。

2)获取所需点的纬度/经度的+/- 0.02内的所有结果。然后使用大圆距离公式(和JavaScript)来磨练你想要的物品。因此,在这种情况下,Fetch会返回一些额外的结果(但会排除大多数结果),然后JavaScript会过滤剩余的结果。

选项#2效果很好,但是是一种双通道方法。

http://www.meridianworlddata.com/Distance-Calculation.asp