เป็นไปได้หรือไม่ที่จะทำให้แผนที่ Google เทาเป็นสีเทายกเว้นบางพื้นที่


15

สิ่งที่ฉันกำลังมองหาคือวิธีการเน้นพื้นที่บางอย่างบนแผนที่ Google Maps โดยทำให้ส่วนที่เหลือของโลกเป็นสีเทา

ฉันได้ยินเกี่ยวกับวิธีแก้ปัญหาของการใช้ 2 รูปหลายเหลี่ยมโดยที่ 1 สามารถมองเห็นได้และอีกวิธีหนึ่งไม่สามารถใช้ได้ถ้าแผนที่นั้นเป็นแบบคงที่ (ไม่มีการเคลื่อนที่ของแผนที่) อย่างไรก็ตามฉันต้องการให้ผู้ใช้สามารถซูมและลากแผนที่ได้

ฉันยังสนใจในวิธีอื่น ๆ ที่ฉันไม่ได้คิดจะเน้นพื้นที่

อัปเดต:

เมื่อฉันลองวิธีแก้ปัญหาที่โพสต์โดย radek (เช่นการสร้าง KML ด้วยรูปหลายเหลี่ยมที่มี outerBoundaryIs (ใหญ่กว่ามุมมอง) และ InnerBoundaryIs (อยู่ในพื้นที่เพื่อเน้น)) ฉันได้รับปัญหาว่าเมื่อฉันซูมเข้าพื้นที่สี่เหลี่ยมจะไม่ครอบคลุม รูปหลายเหลี่ยมโดยรอบอีกต่อไป ดู:

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

ทุกคนที่มีประสบการณ์ / วิธีแก้ปัญหานั้น?

Update2:

ในที่สุดฉันก็ได้เวลาทดสอบโซลูชันของ Radek โดยใช้ Google Fusion Tables ตอนแรกฉันมีปัญหาเดียวกันกับกระเบื้องที่หายไปเช่นเดียวกับ KML (ดูภาพด้านบน) แต่หลังจากโหลดอีกครั้งดูเหมือนว่ามันจะหยิบขึ้นมาและมันแสดงกระเบื้องที่ถูกต้องโดยสิ้นเชิง ฉันรู้สึกว่าแฮ็ค jquery ในโซลูชันของเขามีไว้สำหรับกระเบื้องที่ไม่ได้โหลด

setTimeout(function(){ 
        $("img[src*='googleapis']").each(function() { 
            $(this).attr("src",$(this).attr("src")+"&"+(new Date()).getTime()); 
        }); 
    }, 5000);

เนื่องจากไพ่ดูเหมือนว่าจะโหลดหลังจากรีเฟรชฉันไม่ได้ใช้แฮ็คตัวเอง หากข้อผิดพลาดเกิดขึ้นสำหรับผู้ใช้ใหม่ทุกคนฉันจะได้สัมผัสกับมัน

คำตอบ:


18

บล็อกGoogle Maps Maniaชี้ไปที่ตัวอย่างของแผนที่เขตปกครองสวิส :

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

รหัสจากVasileอยู่บนGitHub


1
นี่แสดงการใช้งานที่ฉันกำลังมองหา! ฉันจะต้องดำดิ่งลงสู่แหล่งที่มาเพื่อดูว่ามันสามารถนำไปใช้งานได้ง่ายในกรณีของฉัน พวกเขากำลังพูดถึงแฮ็ก (ฉันได้รับ IE7 กลัวทันที)
mrg

การใช้ Google Fusion Tables เป็นสิ่งจำเป็นในตัวอย่างนี้หรือไม่? ฉันไม่ได้ใช้สิ่งนั้นในขณะนี้ ฉันจะดาวน์โหลดรหัส Github และตรวจสอบข้อกำหนดว่าอะไรบ้าง
mrg

2
มันลงมาเพื่อสร้างรูปหลายเหลี่ยมใน KML โดยมีขอบเขตด้านนอกเป็นโลกและเป็นขอบเขตภายในเป็นพื้นที่ที่คุณสนใจ นอกจากความยากลำบากในการจัดแต่งทรงผมที่โปร่งใสแล้วฉันยังคงได้รับรูในเลเยอร์กึ่งโปร่งใสของฉันเมื่อฉันซูมเข้าใครมีประสบการณ์กับมันบ้าง?
mrg

1
KML ค่อนข้างโหลดช้าดังนั้นการเปลี่ยนแปลงตลอดเวลาอาจให้ผลที่ไม่ดีมาก นอกจากนั้นฉันจะไม่ต้องเปลี่ยนชื่ออย่างต่อเนื่องเพื่อให้แน่ใจว่า kml เก่าจะไม่ถูกแคช? ฉันรู้สึกว่าฉันต้องการความรู้ของ Google Fusion Tables
mrg

1
มีการนำไปใช้ที่ง่ายกว่าซึ่งสามารถใช้ไฟล์ KML แทน FusionTables ได้หรือไม่ ฉันต้องการเน้นสีต่อเนื่อง 1 พื้นที่ (เขตเมือง) และทำให้ทุกอย่างเป็นสีเทา ฉันดูโค้ดของ Vasile แต่มันซับซ้อนจริงๆและดูเหมือนว่าจะขึ้นอยู่กับการแฮ็กของเบราว์เซอร์ นอกจากนี้หากวิธีนี้สามารถใช้ข้อเสนอแนะของelrobisในการทำให้หน้าต่างแผนที่เป็นพื้นฐานสำหรับเอฟเฟกต์สีเทาฉันคิดว่ามันจะเสถียร / เร็วกว่ามาก {วาดเส้นขอบรอบเมือง & ทาสีมัน} // ทำแล้ว {เป็นสีเทาทุกอย่างยกเว้นพื้นที่ภายในขอบเขต} ???????????????????
user1845528

3

หากเครื่องมือที่ @radek โพสต์ไม่ช่วยคุณก็มีอีกอันที่ใช้คุณสมบัติ google.maps.Polygon ธรรมดา: http://maps.vasile.ch/geomask/

โดยพื้นฐานแล้วมันจะทำตามอัลกอริธึมตัวเลขที่คดเคี้ยว: รูปหลายเหลี่ยมมาสก์ (จักรวาล) เป็นสัญญาณนาฬิกาแบบดิจิทัลและรูปหลายเหลี่ยมภายในทั้งหมดจะถูกแปลงเป็นรูปแบบดิจิทัลแบบนับนาฬิกานับถอยหลัง http://en.wikipedia.org/wiki/Winding_number

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.