internal ReverseGeocodeRequest(MapService service, double latitude, double longitute) : base(service, ServiceRequestType.ReverseGeocode) { // The Maps Service invokes this callback when the address is obtained from the specified coordinates. _geocodeCallback = (result, id, index, total, address, userData) => { errorCode = result; if (result.IsSuccess()) { // The parameter address must be released using maps_address_destroy(). var addressHandle = new Interop.AddressHandle(address, needToRelease: true); _addressList.Add(new PlaceAddress(addressHandle)); if (_addressList.Count == total) { _requestTask?.TrySetResult(_addressList); } } else { // If search is failed, the value of total is 0 and address is NULL _requestTask?.TrySetException(errorCode.GetException(errMessage)); } }; startExecutionAction = new Action(() => { int requestID; errMessage = $"Failed to get address for given coordinates: {latitude}:{longitute}"; errorCode = _service.handle.ReverseGeocode(latitude, longitute, _service.Preferences.handle, _geocodeCallback, IntPtr.Zero, out requestID); if (errorCode.IsFailed() && errorCode != Interop.ErrorCode.Canceled) { _requestTask?.TrySetException(errorCode.GetException(errMessage)); } _requestID = requestID; }); }
internal PlaceAddress(Interop.AddressHandle nativeHandle) { handle = nativeHandle; }
/// <summary> /// Constructs a map address object. /// </summary> /// <since_tizen> 3 </since_tizen> /// <exception cref="System.InvalidOperationException">Thrown when native operation failed to allocate memory.</exception> public PlaceAddress() { handle = new Interop.AddressHandle(); }