$new_city->latitude = $city['latitude']; $new_city->longitude = $city['longitude']; $stat = $new_city->create(); if ($stat) { $cities[] = $new_city; } }*/ $user = midcom::get('auth')->user->get_storage(); $user_position = new org_routamc_positioning_person($user); $coordinates = $user_position->get_coordinates(); if (!$coordinates) { throw new midcom_error("Failed to get your current position."); } echo "<p>" . sprintf('Your position is %s', org_routamc_positioning_utils::pretty_print_coordinates($coordinates['latitude'], $coordinates['longitude'])) . "</p>\n"; $run_times = 1; $run = 0; $total_time = 0; while ($run < $run_times) { $run++; $start = microtime(); $closest = org_routamc_positioning_utils::get_closest('org_routamc_positioning_city_dba', $coordinates, 10); echo "<p>Closest places to you are:<br />"; echo "<ol>\n"; foreach ($closest as $city) { $city_coordinates = array('latitude' => $city->latitude, 'longitude' => $city->longitude); echo "<li>{$city->city}, {$city->country} is " . round(org_routamc_positioning_utils::get_distance($coordinates, $city_coordinates)) . " kilometers " . org_routamc_positioning_utils::get_bearing($coordinates, $city_coordinates) . " from you</li>"; } echo "</ol>\n"; $end = microtime();
/** * Pretty print a position mapping either to a city or cleaned coordinates * * @return string */ static function pretty_print_location(org_routamc_positioning_spot $spot) { $closest = org_routamc_positioning_utils::get_closest('org_routamc_positioning_city', $spot, 1); $city_string = org_routamc_positioning_utils::pretty_print_coordinates($spot); foreach ($closest as $city) { $city_spot = new org_routamc_positioning_spot($city); $city_distance = round(org_routamc_positioning_utils::get_distance($spot, $city_spot)); if ($city_distance <= 4) { $city_string = "{$city->city}, {$city->country}"; } else { $bearing = org_routamc_positioning_utils::get_bearing($city_spot, $spot); $city_string = sprintf($_MIDCOM->i18n->get_string('%skm %s of %s', 'org_routamc_positioning'), $city_distance, $bearing, "{$city->city}, {$city->country}"); } } return $city_string; }
/** * Pretty print a position mapping either to a city or cleaned coordinates * * @return string */ function pretty_print_location($latitude, $longitude) { $coordinates = array('latitude' => $latitude, 'longitude' => $longitude); $closest = org_routamc_positioning_utils::get_closest('org_routamc_positioning_city_dba', $coordinates, 1); $city_string = org_routamc_positioning_utils::pretty_print_coordinates($coordinates['latitude'], $coordinates['longitude']); foreach ($closest as $city) { $city_coordinates = array('latitude' => $city->latitude, 'longitude' => $city->longitude); $city_distance = round(org_routamc_positioning_utils::get_distance($coordinates, $city_coordinates)); if ($city_distance <= 4) { $city_string = "{$city->city}, {$city->country}"; } else { $bearing = org_routamc_positioning_utils::get_bearing($city_coordinates, $coordinates); $city_string = sprintf(midcom::get('i18n')->get_string('%skm %s of %s', 'org.routamc.positioning'), $city_distance, $bearing, "{$city->city}, {$city->country}"); } } return $city_string; }
/** * Human-readable label for cases like Asgard navigation */ function get_label() { return strftime('%x', $this->date) . ' ' . org_routamc_positioning_utils::pretty_print_coordinates($this->latitude, $this->longitude); }