for (size_t i = 0; i < (size_t)nResults; i++)
{
- maps_error_e error = (maps_error_e)maps_address_create(&pAddr);
+ if ((pResult = (Result*)Reply.GetResult(i)) == NULL) continue;
+ if (maps_address_create(&pAddr) != MAPS_ERROR_NONE) continue;
- if(error == MAPS_ERROR_NONE) {
- pResult = (Result*)Reply.GetResult(i);
- if (pResult) {
- Address tmpAddr = (pResult->GetLocation()).GetAddress();
+ Address tmpAddr = (pResult->GetLocation()).GetAddress();
- if(!tmpAddr.GetHouseNumber().empty())
- maps_address_set_building_number(pAddr, tmpAddr.GetHouseNumber().c_str());
+ if(!tmpAddr.GetHouseNumber().empty())
+ maps_address_set_building_number(pAddr, tmpAddr.GetHouseNumber().c_str());
- if(!tmpAddr.GetStreet().empty())
- maps_address_set_street(pAddr, tmpAddr.GetStreet().c_str());
+ if(!tmpAddr.GetStreet().empty())
+ maps_address_set_street(pAddr, tmpAddr.GetStreet().c_str());
- if(!tmpAddr.GetDistrict().empty())
- maps_address_set_district(pAddr, tmpAddr.GetDistrict().c_str());
+ if(!tmpAddr.GetDistrict().empty())
+ maps_address_set_district(pAddr, tmpAddr.GetDistrict().c_str());
- if(!tmpAddr.GetCity().empty())
- maps_address_set_city(pAddr, tmpAddr.GetCity().c_str());
+ if(!tmpAddr.GetCity().empty())
+ maps_address_set_city(pAddr, tmpAddr.GetCity().c_str());
- additionalDataValue = (String*)tmpAddr.GetAdditionalDataValue("CountyName");
- if (additionalDataValue && !additionalDataValue->empty())
- maps_address_set_county(pAddr, additionalDataValue->c_str());
- else if (!tmpAddr.GetCounty().empty())
- maps_address_set_county(pAddr, tmpAddr.GetCounty().c_str());
+ additionalDataValue = (String*)tmpAddr.GetAdditionalDataValue("CountyName");
+ if (additionalDataValue && !additionalDataValue->empty())
+ maps_address_set_county(pAddr, additionalDataValue->c_str());
+ else if (!tmpAddr.GetCounty().empty())
+ maps_address_set_county(pAddr, tmpAddr.GetCounty().c_str());
- additionalDataValue = (String*)tmpAddr.GetAdditionalDataValue("StateName");
- if (additionalDataValue && !additionalDataValue->empty())
- maps_address_set_state(pAddr, additionalDataValue->c_str());
- else if (!tmpAddr.GetState().empty())
- maps_address_set_state(pAddr, tmpAddr.GetState().c_str());
+ additionalDataValue = (String*)tmpAddr.GetAdditionalDataValue("StateName");
+ if (additionalDataValue && !additionalDataValue->empty())
+ maps_address_set_state(pAddr, additionalDataValue->c_str());
+ else if (!tmpAddr.GetState().empty())
+ maps_address_set_state(pAddr, tmpAddr.GetState().c_str());
- additionalDataValue = (String*)tmpAddr.GetAdditionalDataValue("CountryName");
- if (additionalDataValue && !additionalDataValue->empty())
- maps_address_set_country(pAddr, additionalDataValue->c_str());
- else if (!tmpAddr.GetCountry().empty())
- maps_address_set_country(pAddr, tmpAddr.GetCountry().c_str());
+ additionalDataValue = (String*)tmpAddr.GetAdditionalDataValue("CountryName");
+ if (additionalDataValue && !additionalDataValue->empty())
+ maps_address_set_country(pAddr, additionalDataValue->c_str());
+ else if (!tmpAddr.GetCountry().empty())
+ maps_address_set_country(pAddr, tmpAddr.GetCountry().c_str());
- if(!tmpAddr.GetCountry().empty())
- maps_address_set_country_code(pAddr, tmpAddr.GetCountry().c_str());
+ if(!tmpAddr.GetCountry().empty())
+ maps_address_set_country_code(pAddr, tmpAddr.GetCountry().c_str());
- if(!tmpAddr.GetPostalCode().empty())
- maps_address_set_postal_code(pAddr, tmpAddr.GetPostalCode().c_str());
+ if(!tmpAddr.GetPostalCode().empty())
+ maps_address_set_postal_code(pAddr, tmpAddr.GetPostalCode().c_str());
- if(!tmpAddr.GetLabel().empty())
- maps_address_set_freetext(pAddr, tmpAddr.GetLabel().c_str());
- }
- if (maps_address_list_append(address_list, pAddr) != MAPS_ERROR_NONE)
- maps_address_destroy(pAddr);
- pAddr = NULL;
- }
+ if(!tmpAddr.GetLabel().empty())
+ maps_address_set_freetext(pAddr, tmpAddr.GetLabel().c_str());
+
+ if (maps_address_list_append(address_list, pAddr) != MAPS_ERROR_NONE)
+ maps_address_destroy(pAddr);
}
+
+ int address_list_length = 0;
+ maps_address_list_get_length(address_list, &address_list_length);
+
if (m_bCanceled || !m_pCbFunc) {
maps_address_list_destroy(address_list);
- } else if (nResults <= 0) {
+ } else if (address_list_length <= 0) {
maps_address_list_destroy(address_list);
((maps_service_multi_reverse_geocode_cb)m_pCbFunc)(MAPS_ERROR_NOT_FOUND, m_nReqId, 0, NULL, m_pUserData);
} else {
- ((maps_service_multi_reverse_geocode_cb)m_pCbFunc)(MAPS_ERROR_NONE, m_nReqId, nResults, address_list, m_pUserData);
+ ((maps_service_multi_reverse_geocode_cb)m_pCbFunc)(MAPS_ERROR_NONE, m_nReqId, address_list_length, address_list, m_pUserData);
}
delete this;