Các lớp hỗ trợ trong module

Một phần của tài liệu Đồ án: " Tìm hiểu và xây dựng ứng dụng Web trên siêu thị trực tuyến với ASP.NET MVC " pps (Trang 105 - 108)

Trong chức năng tìm kiếm các cửa hàng gần nhất cũng như chức năng thêm cửa

hàng vào CSDL việc xác định ta đều cần thông tin (Latitude , Longtitude ) của địa

chỉ người dùng nhập và cả 2 thông tin đó đều cần thiết cho việc tính toán khoảng

cách của thủ tục GetNearByLocations cũng như cần thiết cho việc hiển thị Marker

trên bản đồ Google vậy để xác định được ta phải sử dụng Google Map API và xây dựng lớp GeoCode như sau:

namespace GoogleGeocoder {

public interface ISpatialCoordinate {

decimal Latitude { get; set; } decimal Longitude { get; set; } }

///<summary>

/// Coordiate structure. Holds Latitude and Longitude.

///</summary>

public struct Coordinate : ISpatialCoordinate {

private decimal _latitude; private decimal _longitude;

public Coordinate(decimal latitude, decimal longitude) {

_latitude = latitude; _longitude = longitude; }

#region ISpatialCoordinate Members public decimal Latitude

{ get { return _latitude; } set { this._latitude = value; } }

public decimal Longitude {

} set { this._longitude = value; } } #endregion }

public class Geocode {

private const string _googleUri = "http://maps.google.com/maps/geo?q="; private const string _outputType = "csv"; // Available options: csv, xml, kml, json

///<summary>

/// Returns a Uri of the Google code Geocoding Uri.

///</summary>

///<param name="address">The address to get the geocode for.</param> ///<returns>A new Uri</returns>

private static Uri GetGeocodeUri(string address) {

string googleKey =

ConfigurationManager.AppSettings["googleApiKey"].ToString(); address = HttpUtility.UrlEncode(address);

return new Uri(String.Format("{0}{1}&output={2}&key={3}", _googleUri, address, _outputType, googleKey));

}

///<summary>

/// Gets a Coordinate from a address.

///</summary>

///<param name="address">An address.

/// <remarks> /// <example>

/// 3276 Westchester Ave, Bronx, NY 10461

/// /// or /// /// New York, NY /// /// or /// /// 10461 (just a zipcode) /// </example> /// </remarks> ///</param>

///<returns>A spatial coordinate that contains the latitude and longitude of the

address.</returns>

{

WebClient client = new WebClient(); Uri uri = GetGeocodeUri(address); /* The first number is the status code, * the second is the accuracy,

* the third is the latitude,

* the fourth one is the longitude. */

string[] geocodeInfo = client.DownloadString(uri).Split(','); return new Coordinate(Convert.ToDecimal(geocodeInfo[2]), Convert.ToDecimal(geocodeInfo[3]));

} } }

Và trước khi tìm địa chỉ các cửa hàng gần nhất ta sẽ gọi tới hàm GetCoorDinates trong lớp Geocode để lấy Latitude và Longtitude của địa chỉ người dùng nhập vào

như sau:

//Get the coordinate of the address

Coordinate coordinate = Geocode.GetCoordinates(addressTextBox.Text); Ngoài ra ta sẽ phải xây dựng DataSet cho việc chứa các địa chỉ cửa hàng tìm

được gần địa chỉ mà khách hàng nhập vào nhất gồm 2 tệp một tệp chứa design

của DataSet là LocationsData.xsd ,một tệp chứa code LocationsData.Designer.cs

Module này có 2 view một dành cho mọi người dùng tìm kiếm siêu thị gần họ nhất

, view còn lại chỉ dành cho người dùng có vai trò quản trị để thêm vị trí cửa hàng mới

Tên trang Đặc tả Đường dẫn ảo

StoreLocator.aspx Trang này cho

phép người dùng tìm kiếm siêu thị gần họ

nhất

Locator/Index

AddStoreLocation.aspx Trang này dành

cho người dùng với vai trò quản trị thêm vị trí cửa hàng mới vào CSDL Locator/AddStore

Một phần của tài liệu Đồ án: " Tìm hiểu và xây dựng ứng dụng Web trên siêu thị trực tuyến với ASP.NET MVC " pps (Trang 105 - 108)

Tải bản đầy đủ (PDF)

(122 trang)