วิธีแปลงที่อยู่เป็นลิงค์ของ Google Maps (ไม่ใช่ MAP)


297

หลังจากดู (Googling) บนเว็บซักพักแล้วฉันไม่พบสิ่งใดที่มีที่อยู่เช่น

1200 Pennsylvania Ave SE, Washington, District of Columbia, 20003

และแปลงเป็นลิงก์ที่คลิกได้:

http://maps.google.com/maps?f=q&source=s_q&hl=en&q=1200+Pennsylvania+Ave+SE,+Washington,+District+of+Columbia,+20003&sll=37.0625,-95.677068&sspn=44.118686,114.169922 และเช่น = UTF8 & cd = 1 & geocode = FT5MUQIdIDlp-W & แยก = 0 & ll = 38.882147, -76.99017 & spn = 0.01064,0.027874 & z = 16 & iwloc = a

ต้องการ jQuery หรือ PHP หรือเพียงแค่ข้อมูลที่เป็นประโยชน์เกี่ยวกับเรื่องนี้

คำตอบ:


681

แล้วเรื่องนี้ล่ะ

https://maps.google.com/?q=1200 Pennsylvania Ave SE, Washington, District of Columbia, 20003

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

หากคุณมีเวลารอนานให้ใช้ URL ด้านล่าง

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

ตัวอย่าง: maps.google.com/?ll=38.882147,-76.99017

UPDATE

ณ ปี 2560 ขณะนี้ Google มีวิธีอย่างเป็นทางการในการสร้าง URL ของ Google Maps ข้ามแพลตฟอร์ม:

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

คุณสามารถใช้ลิงก์เช่น

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

7
ฉันจะสร้างด้วยละติจูดและลองจิจูดได้อย่างไร
nadeem gc

4
ดูเหมือนว่าวิธีนี้จะค่อนข้างสะเพร่าถ้าผู้ใช้ใช้ Google แผนที่ใหม่ หากต้องการสร้างลิงก์ที่บังคับให้เพจที่ปรากฏปรากฏในโหมดคลาสสิคให้ต่อท้าย&output=classicลิงค์ของคุณ ดังนั้นสิ่งทั้งหมดจะเป็นดังนี้:http://maps.google.com/?q=1200%20Pennsylvania%20Ave%20SE,%20Washington,%20District%20of%20Columbia,%2020003&output=classic
แมตต์

4
@ แมทมันเป็นยังไงบ้าง? เอาท์พุท = คลาสสิกจะไม่คงอยู่ตลอดไปและจะเกิดอะไรขึ้นถ้าผู้ใช้ต้องการแผนที่ใหม่?
Chris B

2
มีวิธีใดบ้างที่จะนำหมุดปักลงบนแผนที่ผ่านทาง URL?
หมัด

5
นี้ยังคงใช้งานได้ดี (ขอบคุณ @ChrisB!) แต่ดูเหมือนว่ารูปแบบของตัวเองใน Google Maps อยู่ในขณะนี้ https://www.google.com/maps/place/1200 Pennsylvania Ave SE, Washington, District of Columbia, 20003 ¶สำหรับบางสถานที่ที่คุณจะได้รับไปกับการใช้เพียงแค่ชื่อ ... แต่maps.google.com/?q=และwww.google.com/maps/place/จะไม่จำเป็นต้องส่งกลับผลลัพธ์เดียวกัน: https://www.google.com/maps/place/White Houseขยายไปhttps://www.google.com/maps/place/The+White+House,+1600+Pennsylvania+Ave+NW,+Washington,+DC+20500แต่https://maps.google.com/?q=White Houseให้ร้านขายของเก่าใน NC
Henry

67

ฉันรู้ว่าฉันมาช้ามากในการเล่นเกม แต่ฉันคิดว่าฉันมีส่วนช่วยในเรื่องของลูกหลาน

ฉันเขียนฟังก์ชัน jQuery สั้น ๆ ที่จะเปลี่ยน<address>แท็กใด ๆให้เป็นลิงก์ของ Google แผนที่โดยอัตโนมัติ

ดูตัวอย่างได้ที่นี่

$(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);
   });
});

โบนัส:

ฉันเจอสถานการณ์ที่เรียกร้องให้สร้างแผนที่ฝังตัวจากลิงก์และแม้ว่าฉันจะแบ่งปันกับนักเดินทางในอนาคต:

ดูตัวอย่างเต็มรูปแบบ

$(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);             
    });
});

@ ไมเคิลแจสเปอร์ขอบคุณสำหรับรหัส ur ... มันทำให้ฉันมีแผนที่ใน div ... แต่ปัญหาของฉันคือข้อมูลพินได้รับป๊อปอัป ... ซึ่งฉันไม่ต้องการ ดังนั้นคุณจะแนะนำฉันได้อย่างไรว่าจะไม่เปิดพินข้อมูลกล่องได้อย่างไร ???????ththx ล่วงหน้า ...
Shwet

3
โปรดทราบว่า<address>แท็กHTML5 ไม่ได้มีไว้สำหรับให้ที่อยู่ทางไปรษณีย์ แต่ให้ข้อมูลติดต่อที่เกี่ยวข้องกับเนื้อหา (โดยปกติคือผู้เขียน) developer.mozilla.org/en-US/docs/Web/HTML/Element/address
Neograph734

คำตอบที่ดี! ขอบคุณสำหรับการแบ่งปัน. ผมไม่แน่ใจว่าผลที่ตามมาเกี่ยวกับเรื่องนี้ encodeURIComponent()แต่มันทำงานได้แม้จะไม่มี
moreirapontocom

12

ก.พ. 2559:

ฉันต้องทำสิ่งนี้ตามที่ลูกค้าป้อนค่าฐานข้อมูลและไม่มีตัวสร้าง lat / long วันนี้ Google ชอบ lat / long จริงๆ นี่คือสิ่งที่ฉันเรียนรู้:

1 จุดเริ่มต้นของลิงค์มีลักษณะดังนี้: https://www.google.com/maps/place/

2 จากนั้นคุณใส่ที่อยู่ของคุณ:

  • ใช้เครื่องหมาย + แทนช่องว่างใด ๆ
  • ใส่เครื่องหมายจุลภาคด้านหน้าและด้านหลังเมือง
  • รวมรหัสไปรษณีย์และจังหวัด / รัฐ
  • แทนที่ # ด้วยอะไรก็ได้
  • แทนที่ ++ หรือ ++++ ด้วย single +

3 ใส่ที่อยู่หลังสถานที่ /

4 จากนั้นใส่สแลชที่ส่วนท้าย

หมายเหตุ: เครื่องหมายสแลชที่ส่วนท้ายมีความสำคัญ หลังจากที่ผู้ใช้คลิกที่ลิงก์ Google ก็ดำเนินการต่อไปและผนวกเข้ากับ URL มากขึ้นและพวกเขาจะทำมันหลังจากเครื่องหมายทับนี้

ตัวอย่างการทำงานสำหรับคำถามนี้:

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

ฉันหวังว่าจะช่วย


ในขณะที่ตัวอย่างทำงานได้ฉันไม่สามารถสร้างที่อยู่เยอรมันได้อีก ฉันสิ้นสุดการใช้คำตอบของ Chris B (... /? q = term)
gl03

โชคดีที่ตอนนี้ยังใช้งานได้กับที่อยู่เยอรมัน โปรดดู: google.com/maps/place/…
Yannick Schuchmann



2

การยืมตัวจากโซลูชั่นของ Michael Jasper และ Jon Hendershot ฉันขอเสนอสิ่งต่อไปนี้:

$('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);
});

โซลูชันนี้มีประโยชน์ดังต่อไปนี้เหนือโซลูชันที่เสนอก่อนหน้า

  • มันจะไม่ลบแท็ก HTML (เช่น<br>แท็ก) ภายใน<address>ดังนั้นการจัดรูปแบบจะถูกรักษาไว้
  • มันเข้ารหัส URL อย่างถูกต้อง
  • มันจะแบ่งช่องว่างเพิ่มเติมเพื่อให้ URL ที่สร้างนั้นสั้นกว่าและสะอาดกว่าและมนุษย์อ่านได้หลังจากการเข้ารหัส
  • มันผลิตมาร์กอัปที่ถูกต้อง (วิธีการแก้ปัญหาของ Mr.Hendershot สร้าง<a><address></address></a>ที่ไม่ถูกต้องเพราะองค์ประกอบระดับบล็อกเช่นไม่ได้รับอนุญาตภายในองค์ประกอบแบบอินไลน์เช่น<address><a>

Caveat : หาก<address>แท็กของคุณมีองค์ประกอบระดับบล็อกเช่น<p>หรือ<div>รหัส JavaScript นี้จะผลิตในมาร์กอัปที่ไม่ถูกต้อง (เพราะ<a>แท็กจะมีองค์ประกอบระดับบล็อกเหล่านั้น) แต่ถ้าคุณเพิ่งทำสิ่งนี้:

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

จากนั้นมันจะทำงานได้ดี


ฉันใช้โซลูชันของคุณในโครงการโดยเพียงแค่ปรับแต่งโค้ดตามความต้องการของฉัน มันใช้งานได้ตอนนี้
Mycodingproject

2

นี่คือสิ่งที่ฉันพบจากบทความหนึ่งใน Google Maps:

  1. เปิดGoogle Maps
  2. ตรวจสอบให้แน่ใจว่าแผนที่หรือภาพ Street View ที่คุณต้องการฝังนั้นปรากฏขึ้นบนแผนที่
  3. ที่มุมซ้ายบนให้คลิกเมนูหลัก☰
  4. คลิกแชร์หรือฝังแผนที่
  5. ที่ด้านบนของกล่องที่ปรากฏขึ้นให้เลือกแท็บแผนที่ฝัง
  6. เลือกขนาดที่คุณต้องการจากนั้นคัดลอกรหัสและวางลงในซอร์สโค้ดของเว็บไซต์หรือบล็อกของคุณ

หมายเหตุ : หากคุณกำลังใช้ Maps ในโหมด Liteคุณจะไม่สามารถฝังแผนที่ได้ โปรดทราบว่าข้อมูลการจราจรและข้อมูลแผนที่อื่น ๆ อาจไม่สามารถใช้ได้ในแผนที่แบบฝัง

ป้อนคำอธิบายรูปภาพที่นี่


มันใช้งานได้สำหรับฉัน คัดลอกโค้ดฝังนี้และวางในเว็บไซต์ของคุณ
Kabir Hossain

1

ในhttp://www.labnol.org/internet/tools/short-urls-for-google-maps/6604/พวกเขาแสดง URL แบบสั้นที่ทำงานได้ค่อนข้างดี

URL ของ Google แผนที่ค่อนข้างไม่น่าไว้วางใจโดยเฉพาะเมื่อส่งผ่าน IM ทวีตหรืออีเมล MapOf.it ช่วยให้คุณสามารถเชื่อมโยงไปยัง Google แผนที่ได้อย่างรวดเร็วโดยเพียงระบุที่อยู่ของสถานที่เป็นพารามิเตอร์การค้นหา

http://mapof.it/

ฉันใช้มันสำหรับแอพพลิเคชั่นไม่กี่ตัวที่ฉันออกแบบและใช้งานได้อย่างมีเสน่ห์


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

encode ur แปลงและเพิ่มองค์ประกอบพิเศษทั้งหมดเช่นช่องว่างและทั้งหมด เพื่อให้คุณสามารถดึงรหัสระนาบข้อความจาก db และใช้งานได้โดยไม่ต้องกังวลเกี่ยวกับอักขระพิเศษที่จะเพิ่ม


1
encodeURIComponent คือ javascript คุณควรใช้ urlencode ($ address);
ximi

1

วิธีที่ดีที่สุดคือใช้บรรทัดนี้:

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"

จำไว้ว่าให้แทนที่ที่อยู่ที่หนึ่งและที่สองเมื่อจำเป็น

คุณสามารถดูตัวอย่างงานได้


1

ฉันมีปัญหาที่คล้ายกันซึ่งฉันต้องทำสิ่งนี้ให้สำเร็จสำหรับทุกที่อยู่บนเว็บไซต์ (แต่ละอันถูกห่อด้วยแท็กที่อยู่) jQuery บิตนี้ใช้ได้สำหรับฉัน มันจะจับแต่ละ<address>แท็กแล้วใส่ไว้ในลิงค์ของ Google Maps พร้อมที่อยู่ที่แท็กบรรจุไว้!

$("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>');

}); 

ตัวอย่างการทำงาน -> https://jsfiddle.net/f3kx6mzz/1/


2
แทนที่จะพยายามดึง URL ออกมาด้วยตนเองคุณสามารถใช้encodeURIComponentแทนได้
ซามูเอล

0

นอกจากนี้ทุกคนที่ต้องการที่อยู่ URLENCODE ด้วยตนเอง: http://code.google.com/apis/maps/documentation/webservices/index.html#BuildingURLs

คุณสามารถใช้เพื่อสร้างกฎเฉพาะที่ตรงกับมาตรฐานของ GM


ตอนนี้นำไปสู่ ​​404 โชคไม่ดี
Darren Monahan

1
ขอโทษ ความคิดเห็นนี้เก่ามาก ... ฉันสงสัยว่ารุ่นของ API ที่ใช้ในคำถามนี้ยังคงอยู่ แต่นี่คือสิ่งที่ลิงค์ที่ใช้ในการอ้างอิง: web.archive.org/web/20110420023220/https:// code.google.com/apis/…
Ed Meacham

0

วิธีการแทนที่ C # มักใช้งานได้สำหรับฉัน:

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

0

ฉันเพิ่งพบสิ่งนี้และต้องการแบ่งปัน ..

  1. ค้นหาที่อยู่ของคุณที่ maps.google.com
  2. คลิกที่ไอคอนรูปเฟืองที่ด้านล่างขวา
  3. คลิก "แผนที่ที่แชร์หรือฝัง"
  4. คลิกช่องทำเครื่องหมาย URL แบบสั้นและวางผลลัพธ์ใน href
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.