/// <summary> /// Resolve a Geocode (synchronously) /// </summary> /// <param name="googleRequest"></param> /// <param name="timeout"></param> /// <returns></returns> /// <remarks>Does not work as of the moment</remarks> public GoogleGeocodeResponse ResolveGeoCode(GoogleGeocodeRequest googleRequest, int timeout) { var requestUrl = GenerateRequestUrl(googleRequest); var request = (HttpWebRequest)HttpWebRequest.Create(requestUrl); request.Method = "GET"; request.BeginGetResponse(ResponseCallbackSync, new List<object> { request, googleRequest }); _autoResetEvent.WaitOne(timeout); return _syncGoogleResponse; }
/// <summary> /// Resolve a Geocode (asynchronously) /// </summary> /// <param name="googleRequest"></param> public void ResolveGeoCodeAsync(GoogleGeocodeRequest googleRequest) { var requestUrl = GenerateRequestUrl(googleRequest); var request = (HttpWebRequest)HttpWebRequest.Create(requestUrl); request.Method = "Post"; try { request.BeginGetResponse(ResponseCallback, new List<object> { request, googleRequest }); } catch (Exception e) { GeocodeFailed(e.Message, e); } }
private void SyncronizedGeocodeNotFoundHandler(GoogleGeocodeResponse response, GoogleGeocodeRequest request) { _syncGoogleResponse = response; _autoResetEvent.Set(); }
private string GenerateRequestUrl(GoogleGeocodeRequest googleRequest) { var language = googleRequest.Language.HasValue ? Enum.GetName(typeof (GoogleMapsLanguage), googleRequest.Language.Value).Replace("_", "-") : string.Empty; var bounds = googleRequest.BoundSouthWestLat != null && googleRequest.BoundNorthEastLat != null ? googleRequest.BoundSouthWestLat+ "," + googleRequest.BoundSouthWestLong+ "|" + googleRequest.BoundNorthEastLat + "," + googleRequest.BoundNorthEastLong : string.Empty; var latlong = googleRequest.Latitude == null ? string.Empty : googleRequest.Latitude + "," + googleRequest.Longitude; var address = string.IsNullOrEmpty(googleRequest.Address) ? string.Empty : Uri.EscapeDataString(googleRequest.Address); var requestUrl = !string.IsNullOrEmpty(latlong) ? string.Format(Reverse_Geocode_Request_Url, _appId, latlong, googleRequest.Sensor.ToString().ToLower()) : string.Format(Request_Url, _appId, address, bounds, language, googleRequest.Sensor.ToString().ToLower()) ; return requestUrl; }