public static capex.map.PhysicalAddress forString(string str) { var v = new capex.map.PhysicalAddress(); v.fromString(str); return(v); }
public virtual bool queryAddress(double latitude, double longitude, capex.map.GeoCoderAddressListener listener) { if (listener == null) { return(false); } if (client == null) { listener.onQueryAddressErrorReceived(cape.Error.forCode("noWebClientInstance")); return(false); } var list = listener; client.query("GET", host + apiKey + "&latlng=" + cape.String.forDouble(latitude) + "," + cape.String.forDouble(longitude), null, null, (string statusCode, cape.KeyValueList <string, string> headers, byte[] body) => { var data = cape.JSONParser.parse(body) as cape.DynamicMap; if (data == null) { list.onQueryAddressErrorReceived(cape.Error.forCode("invalidResponseFromGoogleMapsAPI")); return; } var results = data.getDynamicVector("results"); if (results == null || results.getSize() < 1) { list.onQueryAddressErrorReceived(cape.Error.forCode("noResultFound")); return; } var array = results.toVector(); if (array != null) { var n = 0; var m = array.Count; for (n = 0; n < m; n++) { var result = array[n] as cape.DynamicMap; if (result != null) { if (result == null) { continue; } var addressComponents = result.getDynamicVector("address_components"); if (addressComponents == null || addressComponents.getSize() < 1) { list.onQueryAddressErrorReceived(cape.Error.forCode("noaddressComponentsFound")); return; } var v = new capex.map.PhysicalAddress(); var array2 = addressComponents.toVector(); if (array2 != null) { var n2 = 0; var m2 = array2.Count; for (n2 = 0; n2 < m2; n2++) { var addressComponent = array2[n2] as cape.DynamicMap; if (addressComponent != null) { if (addressComponent == null) { continue; } var types = addressComponent.getDynamicVector("types"); if (types == null || types.getSize() < 1) { continue; } var array3 = types.toVector(); if (array3 != null) { var n3 = 0; var m3 = array3.Count; for (n3 = 0; n3 < m3; n3++) { var type = array3[n3] as string; if (type != null) { if (object.Equals(type, null)) { continue; } if (cape.String.equals("street_number", type)) { v.setStreetAddressDetail(addressComponent.getString("long_name")); break; } if (cape.String.equals("route", type)) { v.setStreetAddress(addressComponent.getString("long_name")); break; } if (cape.String.equals("locality", type)) { v.setLocality(addressComponent.getString("long_name")); break; } if (cape.String.equals("sublocality", type)) { v.setSubLocality(addressComponent.getString("long_name")); break; } if (cape.String.equals("administrative_area_level_2", type)) { v.setSubAdministrativeArea(addressComponent.getString("long_name")); break; } if (cape.String.equals("administrative_area_level_1", type)) { v.setAdministrativeArea(addressComponent.getString("long_name")); break; } if (cape.String.equals("country", type)) { v.setCountry(addressComponent.getString("long_name")); v.setCountryCode(addressComponent.getString("short_name")); break; } if (cape.String.equals("postal_code", type)) { v.setPostalCode(addressComponent.getString("long_name")); break; } } } } } } } v.setCompleteAddress(result.getString("formatted_address")); var geometry = result.getDynamicMap("geometry"); if (geometry == null) { continue; } var location = geometry.getDynamicMap("location"); if (location == null) { continue; } v.setLatitude(location.getDouble("lat")); v.setLongitude(location.getDouble("lng")); list.onQueryAddressCompleted(v); return; } } } list.onQueryAddressErrorReceived(cape.Error.forCode("invalidResult")); }); return(true); }