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}&destination={1}&mode={2}&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.
分享到:
相关推荐
Google Map API(Application Programming Interface)则是谷歌为开发者提供的接口,允许他们将谷歌地图的功能集成到自己的网站或应用中,提供丰富的地图定制和交互能力。 一、Google Map API基础 Google Map API...
var map = new google.maps.Map(document.getElementById('map-canvas'), { center: {lat: -34.397, lng: 150.644}, // 这里可以设置地图的中心点 zoom: 8 // 设置缩放级别 }); } ``` 要添加方向服务,我们需要...
除了基本的标记和信息窗口,谷歌地图API V3还支持形状(Shapes,如多边形、圆)、覆盖物(Overlays,如图片)、地理编码(Geocoding,地址转经纬度)以及路线规划(Directions)等功能。这些特性让开发者能够构建出...
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!' }); } ...
7. **服务集成**:Google Map API还可以与Google的其他服务集成,如Places API进行地点搜索,Directions API规划路线,Elevation API获取海拔数据等。 8. **异步加载和优化性能**:为了提高网页加载速度,源代码...
在Android应用开发中,结合Google Map提供路径查询和导航功能是一项常见的需求。本文将详细介绍如何在Android设备上实现这一功能,主要涉及Google Directions API的使用和解析返回的路线数据。 首先,Google ...
同时,GoogleMap API还提供了路线规划和导航功能,可以使用Directions API获取路径数据,并在地图上绘制路线。 总之,Android中的GoogleMap定位涉及多个步骤,包括引入依赖、配置权限、初始化地图、开启定位服务、...
### GoogleMap与BingMap接口分析 #### 一、GoogleMap API详解 ##### 1.1 前言 在地图开发领域,Google Maps API 是一个广泛使用的工具集,为开发者提供了丰富的功能来构建交互式地图应用。这些API不仅支持基本的...
在IT领域,Google Map是一个广泛使用的在线地图服务,它提供了丰富的功能,如定位、导航、路线规划、地理编码等。本项目包含了一系列用于测试Google Map功能的HTML文件,旨在展示其在网页中的应用。以下是对每个文件...
GoogleMap googleMap = mapView.getMap(); googleMap.getUiSettings().setZoomControlsEnabled(true); googleMap.setMyLocationEnabled(true); // 显示用户位置 ``` 为了在地图上画出导航路线,我们需要使用Google ...
var map = new google.maps.Map(document.getElementById('map'), { center: location, zoom: 8 }); } ``` 在上述代码中,我们创建了一个新的地图对象,并将其放置在ID为`map`的HTML元素内,设置了中心位置为...
public void onMapReady(GoogleMap googleMap) { // 在这里初始化地图并设置各种选项 } }); ``` 在AndroidManifest.xml中,必须声明必要的权限,以便应用能够访问网络、读取Google服务信息、获取设备的位置等: ...
6. **路径规划**:若要实现路线规划,单片机需发送起点和终点信息到服务器,服务器利用Google Maps Directions API计算路线,然后返回给单片机。单片机根据返回的信息更新显示。 7. **功耗与性能优化**:在嵌入式...
谷歌地图API分为几个主要版本,包括JavaScript API、Static Maps API、Directions API、Geocoding API等。JavaScript API是最常用的一种,它允许动态地创建和交互地图,而Static Maps API则用于生成静态图片地图。 ...
在Android开发中,GoogleMap和Location服务是两个关键的组件,它们共同为用户提供了一种集成的地图体验和位置感知功能。本文将深入探讨这两个组件的工作原理、如何集成到Android应用中以及相关的API用法。 首先,...
同时,Google Map Platform提供了各种开发工具和服务,如Geocoding API、Directions API、Places API等,帮助企业构建地理空间应用。 七、地理编码与逆地理编码 地理编码将地址转换为经纬度坐标,而逆地理编码则...
3. **显示地图**:通过调用GoogleMap对象的setMapType()方法,可以设置地图类型(如卫星图、普通地图或地形图)。同时,通过setCameraPosition()或animateCamera()可以调整地图的视角和中心点。 4. **标注和覆盖物*...
GoogleMap API还提供了很多其他服务,如地址解析(Geocoding)将地址转换为经纬度,路线规划(Directions)计算两点间的最优路径,海拔查询(Elevation)获取指定位置的海拔信息等。 **示例资源** - `googlelinli....
在回调的`onMapReady(GoogleMap googleMap)`方法中,可以设置地图的属性,如中心点、缩放级别、标记、路径等。 6. **定位服务**:启用定位服务可以让应用获取用户的实时位置。通过调用`GoogleMap`对象的`...
在本压缩包“Google-Map-Api.rar”中,包含了一份关于Google Map API的重要文档——“Google Map Api.doc”以及一个名为“zz.txt”的文本文件。这个文档详细介绍了如何使用Google Map API进行地图相关的编程工作,是...