2017-02-07 2 views
0

Недавно я наткнулся на сайт Valid HTML, где вы можете перетащить обычный URL-адрес карты Google на свою страницу, и он будет автоматически вставлять его через iframe. Я прочитал API-интерфейс Google Maps Embed, и похоже, что это невозможно. Я не уверен, может ли это быть достигнуто с помощью регулярного выражения для извлечения параметров.Получить Google map embed url из обычной ссылки

// Sample https://www.google.com/maps/@37.23,-121.9035969,14z 

$(button).click(function() { 
    reg-url = $('#inputbox').val(); 
    convert(); 
}); 

function convert() { 
    embedid = //get param from reg-url 
    $('.wrapper').html("<iframe src='https://www.google.com/maps/embed?pb="+embedid+"'>"); 
} 

Так что в основном я хочу создать функцию jquery, которая будет конвертировать обычный URL-адрес карты для вставки URL-адреса.

ответ

3
function GoogleMapsURLToEmbedURL(GoogleMapsURL) 
{ 
    var coords = /\@([0-9\.\,\-a-zA-Z]*)/.exec(GoogleMapsURL); 
    if(coords!=null) 
    { 
     var coordsArray = coords[1].split(','); 
     return "https://www.google.com/maps/embed?pb=!1m14!1m12!1m3!1d20000!2d"+coordsArray[1]+"!3d"+coordsArray[0]+"!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!5e0!3m2!1sen!2suk!4v1486486434098"; 
    } 
} 

В вашем примере: -

https://www.google.com/maps/@37.23,-121.9035969,14z 

После того, как '@', 37,23 является одна координата, -121,9035969 является вторым, и 14z является увеличение.

Я выполнил для вас координаты, все, что вам нужно сделать, это написать некоторые, если нужно разработать преобразование масштаба в целое число для встраивания (я установил его всегда равным 20000, что похоже, будет вокруг 14-го уровня масштабирования в соответствии с веб-интерфейсом.

+0

Это именно то, что мне нужно. Спасибо, мне просто интересно, есть способ, поэтому мне не нужно писать 100 строк условного для значения zoom. Возможно, мы можем умножить coordsArray [2] на некоторое число. Я просто не могу получить шаблон. Вот данные http://pastebin.com/A4P0mrSj – WebDev

+0

@ VianneYuZhèng Похоже, что уровни масштабирования основаны на их разрешении экрана, 1 соответствует 1 карте плитка на их экране (что почему-то кажется таким разрозненным) h TTP: //gis.stackexchange.com/a/7480 –

Смежные вопросы