2012-06-18 116 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