我的朋友有一個網站名爲http://jobifly.com。現在的問題是,當你進入該網站,你會看到導航面板上的谷歌地圖,並顯示了可用的工作,但其針引導他們一個接一個,不能把它們全部展現在一起嗎?谷歌地圖Pinpoint顯示
等待迴應..
問候,
Zain公司蘇海爾
我的朋友有一個網站名爲http://jobifly.com。現在的問題是,當你進入該網站,你會看到導航面板上的谷歌地圖,並顯示了可用的工作,但其針引導他們一個接一個,不能把它們全部展現在一起嗎?谷歌地圖Pinpoint顯示
等待迴應..
問候,
Zain公司蘇海爾
與頁面的問題是,所有的位置將頁面加載時gecoded。爲了避免OVER_QUERY_LIMIT,這將延遲完成。
要一起顯示它們,您必須等到所有位置都經過地理編碼。
所以你的朋友可以選擇:
它也可以使用FusionTable來存儲這些數據,地理編碼將自動完成那裏。
另一種可以存儲LatLng永久的選項:給提供作業的用戶一個地圖,他們可以通過點擊地圖手動選擇位置,返回的LatLng可以不受限制地存儲。
所以我有這個代碼,我可以看到它沒有存儲任何地方的工作,它只是創建一個新的實例。
那麼,如何運用融合表來存儲這些數據集..
<?php
if (! defined('ABSPATH')) exit; // Exit if accessed directly
/**
* WP_Job_Manager_Geocode
*
* Obtains Geolocation data for posted jobs from Google.
*/
class WP_Job_Manager_Geocode {
/**
* Constructor
*/
public function __construct() {
add_action('job_manager_update_job_data', array($this, 'update_location_data'), 20, 2);
add_action('job_manager_job_location_edited', array($this, 'change_location_data'), 20, 2);
}
/**
* Update location data - when submitting a job
*/
public function update_location_data($job_id, $values) {
if (apply_filters('job_manager_geolocation_enabled', true)) {
$address_data = self::get_location_data($values['job'] ['job_location']);
self::save_location_data($job_id, $address_data);
}
}
/**
* Change a jobs location data upon editing
* @param int $job_id
* @param string $new_location
*/
public function change_location_data($job_id, $new_location) {
if (apply_filters('job_manager_geolocation_enabled', true)) {
$address_data = self::get_location_data($new_location);
self::clear_location_data($job_id);
self::save_location_data($job_id, $address_data);
}
}
/**
* Checks if a job has location data or not
* @param int $job_id
* @return boolean
*/
public static function has_location_data($job_id) {
return get_post_meta($job_id, 'geolocated', true) == 1;
}
/**
* Called manually to generate location data and save to a post
* @param int $job_id
* @param string $location
*/
public static function generate_location_data($job_id, $location) {
$address_data = self::get_location_data($location);
self::save_location_data($job_id, $address_data);
}
/**
* Delete a job's location data
* @param int $job_id
*/
public static function clear_location_data($job_id) {
delete_post_meta($job_id, 'geolocated');
delete_post_meta($job_id, 'geolocation_city');
delete_post_meta($job_id, 'geolocation_country_long');
delete_post_meta($job_id, 'geolocation_country_short');
delete_post_meta($job_id, 'geolocation_formatted_address');
delete_post_meta($job_id, 'geolocation_lat');
delete_post_meta($job_id, 'geolocation_long');
delete_post_meta($job_id, 'geolocation_state_long');
delete_post_meta($job_id, 'geolocation_state_short');
delete_post_meta($job_id, 'geolocation_street');
delete_post_meta($job_id, 'geolocation_zipcode');
}
/**
* Save any returned data to post meta
* @param int $job_id
* @param array $address_data
*/
public static function save_location_data($job_id, $address_data) {
if (! is_wp_error($address_data) && $address_data) {
foreach ($address_data as $key => $value) {
if ($value) {
update_post_meta($job_id, 'geolocation_' . $key, $value);
}
}
update_post_meta($job_id, 'geolocated', 1);
}
}
/**
* Get Location Data from Google
*
* Based on code by Eyal Fitoussi.
*
* @param string $raw_address
* @return array location data
*/
public static function get_location_data($raw_address) {
$invalid_chars = array(" " => "+", "," => "", "?" => "", "&" => "", "=" => "" , "#" => "");
$raw_address = trim(strtolower(str_replace(array_keys($invalid_chars), array_values($invalid_chars), $raw_address)));
if (empty($raw_address))
return false;
$transient_name = 'jm_geo_' . md5($raw_address);
try {
if (false === ($result = get_transient($transient_name))) {
$result = wp_remote_get(
"http://maps.googleapis.com/maps/api/geocode/xml?address=" . $raw_address . "&sensor=false",
array(
'timeout' => 20,
'redirection' => 5,
'httpversion' => '1.1',
'user-agent' => 'WordPress/WP-Job-Manager-' . JOB_MANAGER_VERSION . '; ' . get_bloginfo('url'),
'sslverify' => false,
)
);
$result = wp_remote_retrieve_body($result);
$xml = new SimpleXMLElement($result);
switch ($xml->status) {
case 'ZERO_RESULTS' :
throw new Exception(__("No results found", 'wp-job-manager'));
break;
case 'OVER_QUERY_LIMIT' :
throw new Exception(__("Query limit reached", 'wp-job-manager'));
break;
default :
set_transient($transient_name, $result, 24 * HOUR_IN_SECONDS * 365);
break;
}
} else {
$xml = new SimpleXMLElement($result);
}
} catch (Exception $e) {
return new WP_Error('error', $e->getMessage());
}
$address = array();
$address['lat'] = sanitize_text_field($xml->result->geometry->location->lat);
$address['long'] = sanitize_text_field($xml->result->geometry->location->lng);
$address['formatted_address'] = sanitize_text_field($xml->result->formatted_address);
if (! empty($xml->result->address_component)) {
$address_data = $xml->result->address_component;
$street_number = false;
$address['street'] = false;
$address['city'] = false;
$address['state_short'] = false;
$address['state_long'] = false;
$address['zipcode'] = false;
$address['country_short'] = false;
$address['country_long'] = false;
foreach ($address_data as $data) {
switch ($data->type) {
case 'street_number' :
$address['street'] = sanitize_text_field($data->long_name);
break;
case 'route' :
$route = sanitize_text_field($data->long_name);
if (! empty($address['street']))
$address['street'] = $address['street'] . ' ' . $route;
else
$address['street'] = $route;
break;
case 'locality' :
$address['city'] = sanitize_text_field($data->long_name);
break;
case 'administrative_area_level_1' :
$address['state_short'] = sanitize_text_field($data->short_name);
$address['state_long'] = sanitize_text_field($data->long_name);
break;
case 'postal_code' :
$address['postcode'] = sanitize_text_field($data->long_name);
break;
case 'country' :
$address['country_short'] = sanitize_text_field($data->short_name);
$address['country_long'] = sanitize_text_field($data->long_name);
break;
}
}
}
return $address;
}
}
new WP_Job_Manager_Geocode();
請張貼代碼(最好是[最小的,完整的,經過測試和讀示例](http://stackoverflow.com/幫助/ mcve),而不只是一個鏈接到你的網站,當然看起來你所問的行爲是編碼的行爲,改變代碼來改變行爲。 – geocodezip