Контекст: я не могу раскрывать слишком много информации о проекте, так как нахожусь под соглашением о неразглашении.

Я использую это руководство для расчета расстояния между двумя адресами с помощью Google Maps.

Я хочу вывести расстояние между адресом происхождения, который является фиксированной точкой, и адресом назначения, которое зависит от того, что пользователь вводит в поле _ct_text_53ea3270e6e6d.

Он отлично работает с одним адресом, но если он использует несколько карт, он показывает расстояние только от одной из карт, а не от каждой из них.

Вот скриншот, показывающий проблему:

enter image description here

Вот мой код:

$field_value = do_shortcode('[ct id="_ct_text_53ea3270e6e6d" property="title | description | value"]'); 

// Our parameters
$params = array(
    'origin'        => '900 South Crouse Ave, Syracuse, NY, 13210',
    'destination'   => $field_value,
    'sensor'        => 'true',
    'units'         => 'imperial'
);

// Join parameters into URL string
foreach($params as $var => $val){
    $params_string .= '&' . $var . '=' . urlencode($val);  
}

// Request URL
$url = "http://maps.googleapis.com/maps/api/directions/json?".ltrim($params_string, '&');

// Make our API request
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$return = curl_exec($curl);
curl_close($curl);

// Parse the JSON response
$directions = json_decode($return);

// Print distance
 print('<p><strong>Distance from Campus: </strong>' .$directions->routes[0]->legs[0]->distance->text. '</p>');  
0
nicolefdesigns 27 Авг 2014 в 19:52
1
Что вы имеете в виду под «несколькими картами»? А что такое «проблемы»? Похоже, вы показываете только одну карту в своем коде. . . . Подсказка: printf намного лучше, чем print для вывода HTML-строк.
 – 
brasofilo
27 Авг 2014 в 22:55
Извините за путаницу. Я нахожусь под соглашением о неразглашении, чтобы не раскрывать слишком много информации о проекте, но я обновил свой первоначальный вопрос.
 – 
nicolefdesigns
29 Авг 2014 в 16:59
Но как воспроизвести проблему? Я просто попробовал с простым файлом PHP (без WP), преобразовал ваш код в функцию, вызвал ее 2 раза, и она сработала нормально. Ознакомьтесь с руководством Как создать минимальный, полный и проверяемый пример
 – 
brasofilo
29 Авг 2014 в 17:06
Я думаю, это связано с полем ввода в $ field_value. Я использую CustomPress для создания настраиваемого поля, чтобы приведенный выше код PHP извлекал из этого ввода . Какие еще фрагменты кода мне следует добавить, чтобы помочь другим понять мою проблему?
 – 
nicolefdesigns
29 Авг 2014 в 17:13
Вот что я пробовал: pastebin.com/yrPJTZws - поместите точные возвращенные значения из вашего $field_value тестировать
 – 
brasofilo
29 Авг 2014 в 17:48

1 ответ

Лучший ответ

Пришлось заменить это:

// Join parameters into URL string
foreach($params as $var => $val){
    $params_string .= '&' . $var . '=' . urlencode($val);
}

С участием:

$params_string = http_build_query($params);
1
nicolefdesigns 15 Сен 2014 в 17:09