Cách chuyển đổi địa chỉ thành Liên kết Google Maps (KHÔNG phải MAP)


297

Sau khi tìm kiếm (Google) trên web một lúc, tôi không thể tìm thấy thứ gì có địa chỉ như:

1200 Pennsylvania Ave SE, Washington, Quận Columbia, 20003

và chuyển đổi nó thành một liên kết có thể nhấp:

http://maps.google.com/maps?f=q&source=s_q&hl=vi&q=1200+Pennsylvania+Ave+SE,+Washington,+District+of +Cumbumbia & eg = UTF8 & cd = 1 & geocode = FT5MUQIdIDlp-w & split = 0 & ll = 38,882147, -76,99017 & spn = 0,01064,0.027874 & z = 16 & iwloc = A

jQuery hoặc PHP ưa thích hoặc chỉ bất kỳ thông tin hữu ích về điều này.

Câu trả lời:


681

Còn cái này thì sao?

https://maps.google.com/?q=1200 Pennsylvania Ave SE, Washington, Quận Columbia, 20003

https://maps.google.com/?q=term

Nếu bạn có thời gian dài thì sử dụng URL bên dưới

https://maps.google.com/?ll=latitude,longitude

Ví dụ: maps.google.com/?ll=38.882147,-76.99017

CẬP NHẬT

Kể từ năm 2017, Google hiện có một cách chính thức để tạo URL Google Maps đa nền tảng:

https://developers.google.com/maps/documentation/urls/guide

Bạn có thể sử dụng các liên kết như

https://www.google.com/maps/search/?api=1&query=1200%20Pennsylvania%20Ave%20SE%2C%20Washington%2C%20District%20of%20Columbia%2C%2020003 

7
Làm cách nào tôi có thể tạo với Vĩ độ và Kinh độ?
nadeem gc

4
Có vẻ như phương pháp này hơi thiếu sót nếu người dùng đang sử dụng Google Maps mới. Để tạo một liên kết buộc trang kết quả xuất hiện trong chế độ cổ điển, chỉ cần nối &output=classicvào liên kết của bạn. Vì vậy, toàn bộ mọi thứ sẽ như thế này:http://maps.google.com/?q=1200%20Pennsylvania%20Ave%20SE,%20Washington,%20District%20of%20Columbia,%2020003&output=classic
Matt

4
@Matt Nó thế nào? Ngoài ra, output = classic sẽ không tồn tại mãi mãi, và nếu người dùng thích bản đồ mới thì sao?
Chris B

2
Có cách nào để lấy mã pin trên bản đồ qua URL không?
Bọ chét

5
Điều này vẫn hoạt động tốt (nhờ @ChrisB!) Nhưng có vẻ như định dạng của Google Maps tại là https://www.google.com/maps/place/1200 Pennsylvania Ave SE, Washington, District of Columbia, 20003 ¶ Đối với một số địa điểm bạn có thể nhận được ngay với chỉ sử dụng tên ... nhưng maps.google.com/?q=www.google.com/maps/place/sẽ không nhất thiết phải trả lại kết quả tương tự: https://www.google.com/maps/place/White Housemở rộng tới https://www.google.com/maps/place/The+White+House,+1600+Pennsylvania+Ave+NW,+Washington,+DC+20500nhưng https://maps.google.com/?q=White Housecho tôi một cửa hàng đồ cổ ở NC
henry

67

Tôi biết tôi đến trò chơi rất muộn, nhưng nghĩ rằng tôi sẽ đóng góp cho hậu thế.

Tôi đã viết một hàm jQuery ngắn sẽ tự động biến bất kỳ <address>thẻ nào thành các liên kết bản đồ của Google.

Xem bản demo tại đây.

$(document).ready(function () {
   //Convert address tags to google map links - Michael Jasper 2012
   $('address').each(function () {
      var link = "<a href='http://maps.google.com/maps?q=" + encodeURIComponent( $(this).text() ) + "' target='_blank'>" + $(this).text() + "</a>";
      $(this).html(link);
   });
});

Tặng kem:

Tôi cũng đã gặp một tình huống kêu gọi tạo bản đồ nhúng từ các liên kết và mặc dù tôi muốn chia sẻ với khách du lịch trong tương lai:

Xem bản demo đầy đủ

$(document).ready(function(){
    $("address").each(function(){                         
        var embed ="<iframe width='425' height='350' frameborder='0' scrolling='no'  marginheight='0' marginwidth='0' src='https://maps.google.com/maps?&amp;q="+ encodeURIComponent( $(this).text() ) +"&amp;output=embed'></iframe>";
        $(this).html(embed);             
    });
});

@Michael Jasper thanx cho mã của bạn ... nó đã cho tôi bản đồ trong div ... nhưng vấn đề của tôi là thông tin pin là cửa sổ bật lên ... mà tôi không muốn. vì vậy bạn có thể hướng dẫn tôi làm thế nào để không mở hộp thông tin pin.?????.thnx trước ...
Shwet

3
Xin lưu ý rằng <address>thẻ HTML5 không nhằm mục đích cung cấp địa chỉ bưu chính, nhưng cung cấp thông tin liên hệ liên quan đến nội dung (thường là tác giả). developer.mozilla.org/en-US/docs/Web/HTML/Euity/address
Neograph734

Câu trả lời chính xác! Cám ơn vì đã chia sẻ. Tôi không chắc chắn hậu quả về nó nhưng nó đã hoạt động ngay cả khi không có encodeURIComponent().
moreirapontocom

12

Tháng 2 năm 2016:

Tôi cần phải làm điều này dựa trên các giá trị cơ sở dữ liệu khách hàng đã nhập và không có trình tạo lat / long. Google thực sự thích lat / long những ngày này. Đây là những gì tôi học được:

1 Phần đầu của liên kết trông như thế này: https://www.google.com/maps/place/

2 Sau đó, bạn đặt địa chỉ của bạn:

  • Sử dụng dấu + thay vì bất kỳ khoảng trắng nào.
  • Đặt dấu phẩy, ở phía trước và phía sau thành phố.
  • Bao gồm bưu chính / zip và tỉnh / bang.
  • Thay thế bất kỳ # không có gì.
  • Thay thế bất kỳ ++ hoặc ++++ bằng đơn +

3 Đặt địa chỉ sau địa điểm /

4 Sau đó đặt một dấu gạch chéo ở cuối.

LƯU Ý: Dấu gạch chéo ở cuối là quan trọng. Sau khi người dùng nhấp vào liên kết, Google sẽ tiếp tục và thêm nhiều hơn vào URL và họ làm điều đó sau dấu gạch chéo này.

Ví dụ làm việc cho câu hỏi này:

https://www.google.ca/maps/place/1200+Pennsylvania+Ave+SE,+Washington,+DC+20003/

Tôi hy vọng điều đó sẽ giúp.


trong khi ví dụ hoạt động, tôi không thể tạo lại địa chỉ này cho địa chỉ tiếng Đức. Cuối cùng tôi đã thực hiện câu trả lời của Chris B (... /? Q = hạn).
gl03

Rất may điều này bây giờ cũng làm việc cho các địa chỉ Đức. Xem: google.com/maps/place/ từ
Yannick Schuchmann



2

Mượn từ các giải pháp của Michael Jasper và Jon Hendershot, tôi đưa ra những điều sau:

$('address').each(function() {
    var text = $(this).text();

    var q    = $.trim(text).replace(/\r?\n/, ',').replace(/\s+/g, ' ');
    var link = '<a href="http://maps.google.com/maps?q=' + encodeURIComponent(q) + '" target="_blank"></a>';

    return $(this).wrapInner(link);
});

Giải pháp này cung cấp các lợi ích sau so với các giải pháp được cung cấp trước đây:

  • Nó sẽ không xóa các thẻ HTML (ví dụ: <br>thẻ) bên trong <address>, vì vậy định dạng được giữ nguyên
  • Nó mã hóa đúng URL
  • Nó xóa các khoảng trắng thừa để URL được tạo ngắn hơn, sạch hơn và có thể đọc được sau khi mã hóa
  • Nó tạo ra đánh dấu hợp lệ (giải pháp của Mr.Henderhot tạo ra <a><address></address></a>không hợp lệ vì các yếu tố cấp khối như <address>không được phép trong các yếu tố nội tuyến như <a>.

Hãy cẩn thận : Nếu <address>thẻ của bạn chứa các thành phần cấp khối như <p>hoặc <div>, thì mã JavaScript này sẽ tạo ra đánh dấu không hợp lệ (vì <a>thẻ sẽ chứa các thành phần cấp khối đó). Nhưng nếu bạn chỉ làm những việc như thế này:

<address>
  The White House
  <br>
  1600 Pennsylvania Ave NW
  <br>
  Washington, D.C.  20500
</address>

Sau đó, nó sẽ hoạt động tốt.


Tôi đã sử dụng giải pháp của bạn trong dự án của tôi bằng cách điều chỉnh mã của bạn theo nhu cầu của tôi. Nó hoạt động cho bây giờ.
Mycodingproject

2

Đây là những gì tôi tìm thấy từ một trong những bài viết trên Google Maps:

  1. Mở Google Maps .
  2. Đảm bảo bản đồ hoặc hình ảnh Chế độ xem phố bạn muốn nhúng hiển thị trên bản đồ.
  3. Ở góc trên cùng bên trái, nhấp vào menu chính.
  4. Nhấp vào Chia sẻ hoặc nhúng bản đồ .
  5. Ở đầu hộp xuất hiện, chọn tab Bản đồ nhúng .
  6. Chọn kích thước bạn muốn, sau đó sao chép mã và dán mã vào mã nguồn của trang web hoặc blog của bạn.

Lưu ý : Nếu bạn đang sử dụng Bản đồ ở chế độ Lite , bạn sẽ không thể nhúng bản đồ. Hãy nhớ rằng thông tin giao thông và một số thông tin Bản đồ khác có thể không có sẵn trong bản đồ được nhúng.

nhập mô tả hình ảnh ở đây


Nó làm việc cho tôi. Sao chép mã nhúng này và dán vào trang web của bạn.
Kabir Hossain

1

Trên http://www.labnol.org/iNET/tools/short-urls-for-google-maps/6604/ họ hiển thị một URL ngắn hoạt động khá tốt

URL Google Maps khá khó sử dụng, đặc biệt là khi gửi qua IM, tweet hoặc email. MapOf.it cung cấp cho bạn một cách nhanh chóng để liên kết với Google Maps bằng cách chỉ định địa chỉ của vị trí làm tham số tìm kiếm.

http://mapof.it/

Tôi đã sử dụng nó cho một vài ứng dụng tôi đã thiết kế và nó hoạt động như một bùa mê.


1
http://maps.google.com/maps?q=<?php echo urlencode($address); ?> 

mã hóa ur hội tụ và thêm tất cả các yếu tố phụ như cho không gian và tất cả. vì vậy bạn có thể dễ dàng tìm nạp mã văn bản mặt phẳng từ db và sử dụng nó mà không phải lo lắng về các ký tự đặc biệt được thêm vào


1
encodeURIComponent là javascript, bạn nên sử dụng urlencode ($ address);
ximi

1

Cách tốt nhất là sử dụng dòng này:

var mapUrl = "http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=16900+North+Bay+Road,+Sunny+Isles+Beach,+FL+33160&amp;aq=0&amp;sll=37.0625,-95.677068&amp;sspn=61.282355,146.513672&amp;ie=UTF8&amp;hq=&amp;hnear=16900+North+Bay+Road,+Sunny+Isles+Beach,+FL+33160&amp;spn=0.01628,0.025663&amp;z=14&amp;iwloc=A&amp;output=embed"

Hãy nhớ thay thế địa chỉ thứ nhất và thứ hai khi cần thiết.

Bạn có thể nhìn vào mẫu công việc


1

Tôi đã có một vấn đề tương tự khi tôi cần thực hiện điều này cho mọi địa chỉ trên trang web (mỗi địa chỉ được bọc trong một thẻ địa chỉ). Một chút của jQuery làm việc cho tôi. Nó sẽ lấy từng <address>thẻ và bọc nó trong một liên kết google maps với địa chỉ mà thẻ chứa trong đó!

$("address").each(function(){

    var address = $(this).text().replace(/\,/g, '');
    var url = address.replace(/\ /g, '%20');

    $(this).wrap('<a href="http://maps.google.com/maps?q=' + url +'"></a>');

}); 

Ví dụ hoạt động -> https://jsfiddle.net/f3kx6mzz/1/


2
Thay vì cố gắng để URL thoát khỏi chuỗi theo cách thủ công, bạn có thể sử dụng encodeURIComponentthay thế.
Samuel

0

Ngoài ra, bất kỳ ai muốn tự tạo URLENCODE địa chỉ: http://code.google.com.vn/apis/maps/documentation/webservice/index.html#BuilderURLs

Bạn có thể sử dụng điều đó để tạo ra các quy tắc cụ thể đáp ứng các tiêu chuẩn GM.


Điều này bây giờ dẫn đến một 404, thật không may.
Darren Monahan

1
Lấy làm tiếc. Nhận xét này rất cũ ... Tôi nghi ngờ phiên bản API đang được sử dụng trong câu hỏi này vẫn còn, nhưng đây là những gì liên kết được sử dụng để tham khảo: web.archive.org/web/20110420023220/https:// code.google.com/apis/,
Ed Meacham

0

Phương pháp thay thế C # thường hoạt động với tôi:

foo = "http://maps.google.com/?q=" + address.Text.Replace(" ","+");

0

Tôi chỉ tìm thấy điều này và muốn chia sẻ ..

  1. tìm kiếm địa chỉ của bạn tại maps.google.com
  2. nhấp vào biểu tượng bánh răng ở phía dưới bên phải
  3. nhấp vào "chia sẻ hoặc nhúng bản đồ"
  4. nhấp vào hộp kiểm url ngắn và dán kết quả vào href ..
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.