`
huhu_long
  • 浏览: 71809 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Google Map Directions

    博客分类:
  • .net
阅读更多
First time try google map related, the requirement asks to provide a step by step route for sales, so that they are easy to work with them.

So first design the API.

    [OperationContract]
    GetDirectionResponse GetDirection(GetDirectionRequest request);

    [DataContract]
    public class GetDirectionRequest : BaseServiceRequest
    {
        [DataMember]
        public ServiceAddress Origin { get; set; }

        [DataMember]
        public ServiceAddress Destination { get; set; }

        [DataMember]
        public bool? Sensor { get; set; }

        [DataMember]
        public GMapTravelMode? Mode { get; set; }

        public static implicit operator GetDirectionReqt(GetDirectionRequest request)
        {
            return new GetDirectionReqt
            {
                Origin = request.Origin,
                Destination = request.Destination,
                Sensor = request.Sensor ?? false,
                Mode = request.Mode ?? GMapTravelMode.Driving
            };
        }
    }

    [DataContract]
    public class GetDirectionResponse : BaseServiceResponse
    {
        [DataMember(Name = "routes")]
        public List<GMapRoute> Routes { get; set; }

        [DataMember(Name = "status")]
        public string Status { get; set; }

        public static implicit operator GetDirectionResponse(GetDirectionResp response)
        {
            return new GetDirectionResponse
            {
                Status = response.Status,
                Routes = response.Routes,

                IsSuccess = response.IsSuccess,
                ErrorMessage = response.ErrorMessage
            };
        }
    }


Then the implementation (there is another layer between service and helper class, skip here...)
public GetDirectionResp GetDirection(GetDirectionReqt request)
        {
            return GMapHelper.QueryRoute(request.Origin, request.Destination, request.Mode, request.Sensor);
        }


And the GMapHelper code
public static GetDirectionResp QueryRoute(ServiceAddress origin, ServiceAddress destination, GMapTravelMode travelMode = GMapTravelMode.Driving, bool sensor = false)
        {
            var gmapRouteQueryUrl = ConfigurationManager.AppSettings["GMap_Route_Query_URL"];
            var requestUri = new Uri(string.Format(gmapRouteQueryUrl, origin, destination, travelMode, sensor.ToString().ToLower()));
            var response = new GetDirectionResp();

            try
            {
                var responseData = new WebClient().DownloadData(requestUri);
                var serializer = new DataContractJsonSerializer(typeof(GetDirectionResp));
                var stream = new MemoryStream(responseData, false);

                response = (GetDirectionResp)serializer.ReadObject(stream);

                if (response.Status == "OK")
                {
                    response.IsSuccess = true;
                }
                else
                {
                    response.IsSuccess = false;
                    response.ErrorMessage = string.Format("Unable to get route(s) from {0} to {1}.", origin, destination);
                }
            }
            catch (Exception ex)
            {
                string errMessage = string.Format("Unexpected exception getting route(s) from {0} to {1}", origin, destination);
                Logger.Error(string.Format("{0}: {1}", MethodBase.GetCurrentMethod().Name, errMessage), ex);

                response.IsSuccess = false;
                response.ErrorMessage = string.Format("{0}, Message: {1}", errMessage, ex.Message);
            }

            return response;
        }


oh, almost forget the google map directions request url:

<!-- Google Map -->
<add key="GMap_Route_Query_URL" value="http://maps.google.com/maps/api/directions/json?origin={0}&amp;destination={1}&amp;mode={2}&amp;sensor={3}" />


And attach some official material web sites.
https://developers.google.com/maps/documentation/webservices/index
https://developers.google.com/maps/documentation/directions/

The other thing about usage limits
引用

Use of the Google Directions API is subject to a query limit of 2,500 directions requests per day. Each directions search will count as a single request against your daily quota when the mode of transportation is driving, walking or cycling. Searching for transit directions will count as 4 requests.
分享到:
评论

相关推荐

    谷歌地图GoogleMap

    Google Map API(Application Programming Interface)则是谷歌为开发者提供的接口,允许他们将谷歌地图的功能集成到自己的网站或应用中,提供丰富的地图定制和交互能力。 一、Google Map API基础 Google Map API...

    google-map-directions:Technophileshub 博客文章的源代码,包含有关如何使用 Google Map API 将 Google Map 方向嵌入 HTML 的详细信息

    var map = new google.maps.Map(document.getElementById('map-canvas'), { center: {lat: -34.397, lng: 150.644}, // 这里可以设置地图的中心点 zoom: 8 // 设置缩放级别 }); } ``` 要添加方向服务,我们需要...

    谷歌MAP_V3中文详解以及一个简单例子

    除了基本的标记和信息窗口,谷歌地图API V3还支持形状(Shapes,如多边形、圆)、覆盖物(Overlays,如图片)、地理编码(Geocoding,地址转经纬度)以及路线规划(Directions)等功能。这些特性让开发者能够构建出...

    google map api学习

    var map = new google.maps.Map(document.getElementById('map'), { zoom: 8, center: myLatLng }); var marker = new google.maps.Marker({ position: myLatLng, map: map, title: 'Hello World!' }); } ...

    google map api开发源代码

    7. **服务集成**:Google Map API还可以与Google的其他服务集成,如Places API进行地点搜索,Directions API规划路线,Elevation API获取海拔数据等。 8. **异步加载和优化性能**:为了提高网页加载速度,源代码...

    Android结合googlemap应用开发

    在Android应用开发中,结合Google Map提供路径查询和导航功能是一项常见的需求。本文将详细介绍如何在Android设备上实现这一功能,主要涉及Google Directions API的使用和解析返回的路线数据。 首先,Google ...

    android GoogleMap定位(四)

    同时,GoogleMap API还提供了路线规划和导航功能,可以使用Directions API获取路径数据,并在地图上绘制路线。 总之,Android中的GoogleMap定位涉及多个步骤,包括引入依赖、配置权限、初始化地图、开启定位服务、...

    GoogleMap与BingMap接口分析

    ### GoogleMap与BingMap接口分析 #### 一、GoogleMap API详解 ##### 1.1 前言 在地图开发领域,Google Maps API 是一个广泛使用的工具集,为开发者提供了丰富的功能来构建交互式地图应用。这些API不仅支持基本的...

    google map的測試HTML檔案

    在IT领域,Google Map是一个广泛使用的在线地图服务,它提供了丰富的功能,如定位、导航、路线规划、地理编码等。本项目包含了一系列用于测试Google Map功能的HTML文件,旨在展示其在网页中的应用。以下是对每个文件...

    android在google map上画导航路线图

    GoogleMap googleMap = mapView.getMap(); googleMap.getUiSettings().setZoomControlsEnabled(true); googleMap.setMyLocationEnabled(true); // 显示用户位置 ``` 为了在地图上画出导航路线,我们需要使用Google ...

    googlemap 地图功能

    var map = new google.maps.Map(document.getElementById('map'), { center: location, zoom: 8 }); } ``` 在上述代码中,我们创建了一个新的地图对象,并将其放置在ID为`map`的HTML元素内,设置了中心位置为...

    android google map 导航

    public void onMapReady(GoogleMap googleMap) { // 在这里初始化地图并设置各种选项 } }); ``` 在AndroidManifest.xml中,必须声明必要的权限,以便应用能够访问网络、读取Google服务信息、获取设备的位置等: ...

    Google-Map.rar_google map

    6. **路径规划**:若要实现路线规划,单片机需发送起点和终点信息到服务器,服务器利用Google Maps Directions API计算路线,然后返回给单片机。单片机根据返回的信息更新显示。 7. **功耗与性能优化**:在嵌入式...

    Google-Map-Api.rar_google map_google map api

    谷歌地图API分为几个主要版本,包括JavaScript API、Static Maps API、Directions API、Geocoding API等。JavaScript API是最常用的一种,它允许动态地创建和交互地图,而Static Maps API则用于生成静态图片地图。 ...

    GoogleMap和location

    在Android开发中,GoogleMap和Location服务是两个关键的组件,它们共同为用户提供了一种集成的地图体验和位置感知功能。本文将深入探讨这两个组件的工作原理、如何集成到Android应用中以及相关的API用法。 首先,...

    Google map 高级特性

    同时,Google Map Platform提供了各种开发工具和服务,如Geocoding API、Directions API、Places API等,帮助企业构建地理空间应用。 七、地理编码与逆地理编码 地理编码将地址转换为经纬度坐标,而逆地理编码则...

    使用google map的API开发的LBS小软

    3. **显示地图**:通过调用GoogleMap对象的setMapType()方法,可以设置地图类型(如卫星图、普通地图或地形图)。同时,通过setCameraPosition()或animateCamera()可以调整地图的视角和中心点。 4. **标注和覆盖物*...

    GoogleMap 中文API + 示例

    GoogleMap API还提供了很多其他服务,如地址解析(Geocoding)将地址转换为经纬度,路线规划(Directions)计算两点间的最优路径,海拔查询(Elevation)获取指定位置的海拔信息等。 **示例资源** - `googlelinli....

    google map demo

    在回调的`onMapReady(GoogleMap googleMap)`方法中,可以设置地图的属性,如中心点、缩放级别、标记、路径等。 6. **定位服务**:启用定位服务可以让应用获取用户的实时位置。通过调用`GoogleMap`对象的`...

    Google-Map-Api.rar_google map

    在本压缩包“Google-Map-Api.rar”中,包含了一份关于Google Map API的重要文档——“Google Map Api.doc”以及一个名为“zz.txt”的文本文件。这个文档详细介绍了如何使用Google Map API进行地图相关的编程工作,是...

Global site tag (gtag.js) - Google Analytics