У меня есть карта Google на моей странице поста WordPress, которая берет адрес из 2-х пользовательских полей. Работает нормально, но сейчас я пытаюсь добавить ссылку / опцию просмотра улиц.
У меня есть на моей странице —
<iframe width="100%" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://www.google.com/maps/embed/v1/place?q=<?php echo $add; ?>,%20<?php $terms = wp_get_post_terms(get_the_ID(), 'city-type');
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){
foreach ( $terms as $term ) {
if ($term->parent == 0) //check for parent terms only
echo '' . $term->name . '';
}
} ?>&zoom=17&key=mytoken"></iframe>
Который затем выведет что-то вроде этого —
<iframe width="100%" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://www.google.com/maps/embed/v1/place?q=100 las vegas ave,%20Las Vegas, NV&zoom=17&key=mytoken"></iframe>
Есть ли способ добавить просмотр улиц без использования координат?
Я пытался получить координаты, но они были немного не в порядке —
<?php
function getCoordinates($address){
$address = str_replace(" ", "+", $address); // replace all the white space with "+" sign to match with google search pattern
$url = "https://maps.google.com/maps/api/geocode/json?sensor=false&address=$address";
$response = file_get_contents($url);
$json = json_decode($response,TRUE); //generate array object from the response from the web
return ($json['results'][0]['geometry']['location']['lat'].",".$json['results'][0]['geometry']['location']['lng']);
}
$terms = wp_get_post_terms(get_the_ID(), 'city-type');
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){
foreach ( $terms as $term ) {
if ($term->parent == 0) //check for parent terms only
echo getCoordinates($add, $term->name, $property_pin);
}
} else {
echo getCoordinates($add, $term->name, $property_pin);
}
?>
Я уже использую геокод, чтобы попытаться получить координаты заранее. Например, геокод дает мне эти координаты — 34.0229995, -118,4931421 но координаты, которые я ищу, — 34.050217, -118,259491
Хорошо, я понял это.
Я использовал код из моего вопроса, чтобы получить координаты адреса —
<?php
// FUNCTION TO CONVERT ADDRESSES INTO COORDINATES
function getCoordinates($address){
$address = str_replace(" ", "+", $address); // replace all the white space with "+" sign to match with google search pattern
$url = "https://maps.googleapis.com/maps/api/geocode/json?address=$address&key=YOUR_TOKEN_KEY";
$response = file_get_contents($url);
$json = json_decode($response,TRUE); //generate array object from the response from the web
return ($json['results'][0]['geometry']['location']['lat'].",".$json['results'][0]['geometry']['location']['lng']);
}
// THIS GETS MY TOP TERM FROM MY CUSTOM TAXONOMY I.E. NEW YORK, NY
$terms = wp_get_post_terms(get_the_ID(), 'city-type');
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){
foreach ( $terms as $term ) {
if ($term->parent == 0) //check for parent terms only
// $ADD IS FROM MY CUSTOM FIELD FOR THE ADDRESS I.E. 1460 BROADWAY
$the_address = getCoordinates($add, $term->name);
}
}; ?>
Тогда я просто использовал следующий код Google Embed (замените ключ токена своим собственным) —
<iframe width="100%" height="350" frameborder="0" style="border:0"src="https://www.google.com/maps/embed/v1/streetview?location=<?php echo $the_address; ?>&heading=165&pitch=0&key=YOUR-TOKEN-KEY" allowfullscreen></iframe>
Это для добавления карты просмотра улиц, хотя я хотел и то и другое, поэтому я создал два элемента div, по одному для каждой карты, а затем просто использовал функции щелчка, чтобы показать / скрыть их —
jQuery(document).ready(function(){
$("#sv-link").click(function(){
$("#rv-box").slideToggle("fast");
$("#sv-box").slideToggle();
});
$("#rv-link").click(function(){
$("#sv-box").slideToggle("fast");
$("#rv-box").slideToggle();
});
});
Я знаю, что это, вероятно, не лучшее решение, и я могу копать глубже, но это все, что мне нужно. Я столкнулся с проблемой с парой адресов, которые имели несколько изображений / перспектив для одного местоположения. Я пытаюсь понять это, сундук с таймс-квадратом, используя адрес 1460 Бродвей, является прекрасным примером.
Кроме того, это, кажется, работает нормально.
Если вы получите координаты, у вас будет точное местоположение. Браузеры в наши дни могут запрашивать разрешения, а мобильные устройства поставляются с GPS. использование адресов не так точно.
Какой аргумент в пользу юзабилити против простого запроса данных, если вы сначала получите согласие пользователей?