# By Proximity

Suppose you want to search using proximity. For this, we have created the custom action with name “**Inogic.Maplytics.API.Proximity**” (**ikl\_InogicMaplyticsAPIProximity**).<br>

Custom action accepts following parameters:

* **CurrentLocation:** Location for which you want to do the proximity search.
* **Proximity:** Provide the proximity radius. e.g., 3. If you want to do Concentric Proximity search, then specify multiple proximity radii separated by comma ‘,’. For example, 5, 10, 15.
* **DistanceUnit:** Provide the radius unit. It can be either “mile or kilometer". If the unit is not specified then by default mile will be considered as the radius unit.
* **Records:** EntityCollection
* **Entity:** Provide the entity name. e.g. “Account"
* **ViewName:** Specify the view name. e.g., “My Active Accounts”

When user passes the required parameters and executes this action then it will return records colle

{% hint style="info" %}
Note: As custom action has 2 minutes timeout so maximum records that are processed is around 90K- 100K. If you have a view having records more than 100K then it may throw a timeout issue. So, make sure to enter the viewname of the view that has less then 100K records.
{% endhint %}

To execute proximity action using the C#, use the following code.

```
//create request object
string requestName = "ikl_InogicMaplyticsAPIProximity";

                    //create request object
                    OrganizationRequest orgReq = new OrganizationRequest(requestName);
                    //for proximity
                    orgReq["CurrentLocation"] = "New York";
                    orgReq["Proximity"] = "10,25";
                    orgReq["DistanceUnit"] = "Mile";
                    //Entity & view
                    orgReq["Entity"] = "account";
                    orgReq["ViewName"] = "My Active Accounts";
                    OrganizationResponse response = service.Execute(orgReq);

                    EntityCollection recordsCollection = (EntityCollection)response.Results["RecordsCollection"];


```

To execute the action using the javascript (web api) you can use following code.

```
function executeCustomAction() {
    try {

        var actionObj = {
            CurrentLocation: "New York",
            Proximity: "10,25",
            DistanceUnit: "Mile",          
            Entity: "account",
            ViewName: "My Active Accounts",
        }

        // call this function to execute the action 
       execute(actionObj, "ikl_InogicMaplyticsAPIProximity()", function (data) {

            alert("Success: " + data);

        }, function (error) {
            debugger;
            alert("Error: " + error.message);
        });

    } catch (e) {
        alert(e.message);
    }
}

function execute(req, reqName, successCallback, errorCallback) {

    //create AJAX request
    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        datatype: "json",
        url: encodeURI(getWebAPIPath() + reqName),
        data: window.JSON.stringify(req),
        beforeSend: function (xhr) {
            //Specifying this header ensures that the results will be returned as JSON.             
            xhr.setRequestHeader("Accept", "application/json");
            //xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8");
            xhr.setRequestHeader("OData-MaxVersion", "4.0");
            xhr.setRequestHeader("OData-Version", "4.0");
        },
        success: function (data, textStatus, xhr) {
            //successCallback function
            if (data != null && data.value != undefined) {
                successCallback(data.value);
            } else {
                successCallback(data);
            }
        },
        error: function (xhr, textStatus, errorThrown) {
            errorCallback(Inogic.Maplytics.ApiLib.errorHandler(xhr));
        }
    });

}

function getWebAPIPath() {
    return Xrm.Page.context.getClientUrl() + "/api/data/v8.0/";
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.maplytics.com/maplytics/azure-map/features/maplytics-api/by-proximity-1.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
