api_key = DDWMapsHelper::getApiKey(); } /** * Get Address from postcode and country * @param $postcode * @param $country */ public function getAddress($postcode, $country) { $postcode = urlencode($postcode); $url = $this->url_distance_matrix . "&origins=" . $postcode . "," . $country . "&destinations=" . $postcode . "," . $country . "&key=" . $this->api_key; $result = json_decode(Tools::file_get_contents($url)); if (!empty($result->origin_addresses[0])) { return $result->origin_addresses[0]; } else { return ''; } } /** * Construct the url to perform the API Request * @param $source_address * @param array $destination_addresses */ private function performRequest($source_address, array $destination_addresses) { $query_customer = $source_address['postal_code'] . ',' . $source_address['country']; $query_carriers = ''; foreach ($destination_addresses as $destination_address) { $query_carriers .= $destination_address['postal_code'] . ',' . $destination_address['country'] . '|'; } $query_carriers = trim($query_carriers, '|'); $url = $this->url_distance_matrix . '&origins=' . urlencode($query_customer) . '&destinations=' . urlencode($query_carriers) . '&key=' . $this->api_key; return json_decode(Tools::file_get_contents($url)); } private function returnDistances($result) { } /** * Get Distance between a source address and destination addresses * @param $source_address * @param array $destination_addresses */ public function getDistancesByPostCodes($source_address, array $destination_addresses) { $carrier_distances = array(); $result = $this->performRequest($source_address, $destination_addresses); if (empty($result->rows[0])) { return array(); } // add distances to the wch carrier $index = 0; foreach ($result->rows[0]->elements as $row) { if (empty($row->distance)) { $destination_addresses[$index]['distance'] = 0; } else { $destination_addresses[$index]['distance'] = $row->distance->value / 1000; // in Kilometres } $index++; } foreach ($destination_addresses as $destination_address) { $carrier_distances[$destination_address['id_carrier']] = $destination_address; } return $carrier_distances; } }