Google Maps API - 使用特定的距离半径来显示地址

时间:2017-04-05 00:22:29

标签: google-maps google-maps-api-3 google-maps-markers

我希望创建一个允许我使用API​​搜索地址的功能。然后从该地址希望能够设置该位置的50英里半径,并能够看到我们的数据库中50英里范围内的其他地址。半径50英里可以改变,但这仅仅是例如。

2 个答案:

答案 0 :(得分:1)

这应该对你有所帮助。如果更适合您,您可以从Google Maps API或其他地方获取经度和纬度。然后使用此方法计算距离。

http://www.geodatasource.com/developers/c-sharp

答案 1 :(得分:0)

您可以尝试enter image description here

  

Google Places API网络服务允许您查询各种类别的地点信息,例如:机构,重要的兴趣点,地理位置等。您可以通过邻近或文本字符串搜索位置。地方搜索会返回地点列表以及每个地点的摘要信息;通过Places API查询可以获得更多信息。

根据此相关SO Place Details的建议,Places API响应采用JSON格式。社群向我们post建议您轻松生成C#模型,以响应Google商家信息查询。然后使用json2csharp反序列化查询结果。

以下是示例代码查询:

   using (var client = new HttpClient())
    {
        var response = await client.GetStringAsync(string.Format("https://maps.googleapis.com/maps/api/place/nearbysearch/json?location={0},{1}&radius=500&type=bar&key=YourAPIKey", latitude, longitude));
        var result = JsonConvert.DeserializeObject<PlacesApiQueryResponse>(response);
    }

然后按照代码实现了解如何检查搜索地址与数据库中其他地址的距离。他们使用computeDistanceBetween返回两个LatLng之间的距离(以米为单位)。

var marker_lat_lng = new google.maps.LatLng(location.lat, location.lng);
                            var distance_from_location = google.maps.geometry.spherical.computeDistanceBetween(address_lat_lng, marker_lat_lng); //distance in meters between your location and the marker
                            if (distance_from_location <= radius_km * 1000) {
                                var new_marker = new google.maps.Marker({
                                    position: marker_lat_lng,
                                    map: map,
                                    title: location.name
                                });