ต้องการโซลูชัน Google แผนที่ที่เรียบง่าย หายไปในเขาวงกตของโมดูล


15

ก่อนอื่นให้ฉันแค่บอกว่าฉันไม่สนใจ Drupal รุ่นไหนที่ฉันต้องใช้ (6 หรือ 7) ฉันมีประสบการณ์กับทั้งสองเวอร์ชันฉันไม่จำเป็นต้องทำงานกับ Google Maps จนถึงตอนนี้ ความต้องการพื้นฐานค่อนข้างง่าย (จากสิ่งที่ฉันเข้าใจ):

1) มีโหนดสำหรับทุก บริษัท ที่ฉันต้องการเพิ่มในแผนที่

2) ในรูปแบบการแก้ไขโหนดฉันต้องการเพิ่มที่อยู่และเพิ่มมันลงใน google แผนที่ที่กำหนดเอง (หรืออาจจะคัดลอกวางลิงค์ของที่ตั้งของแผนที่ google)

3) มีฟังก์ชั่นการค้นหาเพื่อค้นหา บริษัท ที่ใกล้ที่สุดสำหรับสถานที่ที่กำหนด

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

ขอบคุณล่วงหน้า.

คำตอบ:


36

ฉันได้สร้างคุณสมบัติ Drupal ที่ใช้สิ่งนี้โดยใช้ OpenLayers (ดูhttp://drupal.org/project/ol_locator ) หรือคุณสามารถใช้ walk-through ต่อไปนี้เพื่อตั้งค่าของคุณเอง

  1. ดาวน์โหลดและเปิดใช้งานโมดูลต่อไปนี้:

  2. เปิดใช้งานโมดูลย่อย:

    • แผนที่ Geofield 7.x-1.0-alpha5
    • Views UI 7.x-3.0-rc1
    • OpenLayers UI 7.x-2.0-alpha2
    • OpenLayers Views 7.x-2.0-alpha2
  3. ไปที่admin/structure/types/addและสร้างประเภทเนื้อหาใหม่ที่เรียกว่า " Location"

  4. ไปที่admin/structure/types/manage/location/fieldsและเพิ่มฟิลด์ต่อไปนี้:

    • ป้ายกำกับ: ที่อยู่> ชื่อฟิลด์: ที่อยู่> ประเภทฟิลด์: ที่อยู่ทางไปรษณีย์> วิดเจ็ต: แบบฟอร์มที่อยู่แบบไดนามิก
  5. เลือกประเทศที่คุณต้องการจากรายการ เว้นว่างไว้เพื่ออนุญาตทั้งหมด

  6. ตรวจสอบ "แบบฟอร์มที่อยู่ (เฉพาะประเทศ)"

    • หมายเหตุ: ประเทศและเขตข้อมูลที่เกี่ยวข้องได้รับการจัดการโดยโมดูล Addressfield หากคุณไม่เห็นประเทศของคุณหรือไม่มีเขตข้อมูลที่เหมาะสมคุณต้องยื่นปัญหากับโมดูลนั้นhttp://drupal.org/project/addressfield (ตรวจสอบว่ามีปัญหาในคิวเกี่ยวกับคุณหรือไม่ ประเทศที่ขาดหายไปก่อนที่จะโพสต์)
  7. ป้ายกำกับ: Geofield> ชื่อฟิลด์: geofield> ประเภทฟิลด์: Geofield> Widget: Geocode จากฟิลด์อื่น

  8. ไปที่admin/structure/types/manage/ol_locator_location/displayและเปลี่ยนการDefaultแสดงผลสำหรับ Geofield:

    • ป้ายกำกับ: ซ่อน> รูปแบบ: OpenLayers
  9. คลิกที่ไอคอนรูปเฟืองและเลือกรายการต่อไปนี้:

    • OpenLayers Preset: Geofield Formater Map> ตัวเลือกข้อมูล: ใช้รูปแบบเรขาคณิตเต็มรูปแบบ
  10. ไปที่admin/structure/openlayers/layers/settingsและตั้งค่าต่อไปนี้:

    • รุ่น Google Maps API: v3.2
  11. ลองทดสอบเพื่อดูว่า Geocoding ทำงานได้หรือไม่โดยการสร้างตำแหน่งทดสอบ

    • เมื่อสร้างประเภทเนื้อหาทดสอบตรวจสอบให้แน่ใจว่าคุณใช้ที่อยู่ที่มีชื่อเสียง หาก Google ไม่ทราบที่อยู่ของคุณไซต์ใหม่ของคุณก็จะไม่มีเช่นกัน
  12. ไปที่admin/structure/views/addและสร้างมุมมองใหม่ด้วยข้อมูลต่อไปนี้

    • ชื่อมุมมอง: การค้นหาใกล้เคียง> คำอธิบาย: แสดงตำแหน่งทางภูมิศาสตร์บนแผนที่แบบไดนามิกเพื่อให้ผู้ใช้ทำการค้นหาแบบใกล้เคียง > แสดง: เนื้อหาประเภท: สถานที่จัดเรียงตาม: ไม่เรียง> ดำเนินการต่อ & แก้ไข
  13. เพิ่มฟิลด์ต่อไปนี้และเก็บค่าเริ่มต้นยกเว้นที่ระบุไว้:

    1. เนื้อหา: ชื่อ > ทำเครื่องหมายสร้างป้ายกำกับ: "ชื่อ"
    2. เนื้อหา: ที่อยู่ (ที่อยู่)
    3. เนื้อหา: Geofield (Geofield)> แยกออกจากการแสดงผล
    4. ระยะทาง: ระยะทาง (ระยะทาง)
  14. เพิ่มเกณฑ์ตัวกรองต่อไปนี้ไปยังที่มีอยู่:

    • เนื้อหา: เผยแพร่แล้ว (ใช่) และ
    • เนื้อหา: ประเภท (= ตำแหน่ง)
    • พร็อกซิมิตี: วงกลมใหญ่ (สัมผัส)> เปิดเผยตัวกรองนี้กับผู้เยี่ยมชมเพื่อให้พวกเขาเปลี่ยนได้> ป้ายกำกับ: ความใกล้เคียง> เพิ่มฟิลด์ "10" ลงในค่า> ปลดล็อกหน่วยการวัด> ปลดล็อกตำแหน่ง
  15. ส่วนหัว > ทั่วโลก: พื้นที่ข้อความ> แสดงแม้ว่ามุมมองจะไม่มีผลลัพธ์

    • "ค้นหาสถานที่ใกล้คุณคุณสามารถค้นหาโดยใช้เมืองจังหวัด / รัฐหรือรหัสไปรษณีย์ / ไปรษณีย์"
  16. ไม่มีลักษณะการทำงาน > ทั่วโลก: พื้นที่ข้อความและเพิ่มรายการต่อไปนี้:

    • "ขออภัยไม่พบผลลัพธ์
      1. ) ตรวจสอบความถูกต้องของรหัสไปรษณีย์ / ไปรษณีย์ของคุณ
      2. ) ตรวจสอบการสะกดคำของเมืองจังหวัดหรือรัฐของคุณ
      3. ) เพิ่มระยะทางใกล้เคียง"
  17. ส่งข้อความปุ่ม : ค้นหา

  18. เพิ่มจอแสดงผลใหม่: " การซ้อนทับข้อมูลของ OpenLayers "

  19. รูปแบบ :

    • การตั้งค่า> ใช้ openlayers นี้ (แทนที่)> แหล่งข้อมูลแผนที่: WKT> ฟิลด์ WKT: Geofield> ฟิลด์คำอธิบาย>> ใช้ (จอแสดงผลนี้)
  20. บันทึกมุมมอง

  21. ไปที่ admin/structure/openlayers/maps

  22. โคลนแผนที่เริ่มต้น

  23. ข้อมูลทั่วไป> ชื่อ: location_map หัวข้อ: แผนที่ที่ตั้ง> คำอธิบายแผนที่: นี่คือแผนที่ตำแหน่งที่ตั้งเริ่มต้น

  24. เลเยอร์ & สไตล์> เลเยอร์ซ้อนทับ (เลือกมุมมองที่เราเพิ่งสร้าง) ตำแหน่งที่ตั้ง "เปิดใช้งาน" "เปิดใช้งาน" ทำเช่นเดียวกันสำหรับตัวยึดตำแหน่งสำหรับฟอร์แมตเตอร์ Geofield

  25. พฤติกรรม> ป๊อปอัป (ต้องกลับมาและ"เลือกเลเยอร์เพื่อใช้ป๊อปอัปกับ" ในภายหลัง)> ซูมไปที่เลเยอร์"เลือกเลเยอร์เพื่อซูมไปที่เมื่อโหลดแผนที่" > ระดับการซูมจุด: 20 ****

  26. บันทึกแผนที่

  27. กลับไปที่มุมมองที่เราเพิ่งสร้างขึ้น

    • admin/structure/views/view/proximity_search/edit
  28. เพิ่มจอแสดงผล"หน้า"

    • เส้นทาง: /locator
    • รูปแบบ: แผนที่ OpenLayers> ใช้ (จอแสดงผลนี้)> แผนที่: แผนที่ที่ตั้ง (แผนที่ที่เราเพิ่งสร้างใน OpenLayers)> ใช้
  29. บันทึกมุมมอง (ตอนนี้เราควรเห็นแผนที่ของเราในบานหน้าต่างแสดงตัวอย่างที่ด้านล่างของมุมมองของเราพร้อมเนื้อหาทดสอบใด ๆ

  30. เพิ่มจอแสดงผล: "ไฟล์แนบ"

    • รูปแบบ: ตาราง> ใช้ (จอแสดงผลนี้)
    • แนบกับ: หน้า
    • รับตัวกรองแบบสัมผัส: ใช่
    • ลบส่วนหัว> ทั่วโลก: พื้นที่ข้อความ> ใช้ (จอแสดงผลนี้)
    • รายการที่จะแสดง: แสดงจำนวนรายการที่ระบุ | 5 รายการ
    • รับเพจเจอร์: ใช่
    • แสดงเพจเจอร์: ใช่
  31. บันทึกมุมมอง

  32. พฤติกรรม> ป๊อปอัป> เลเยอร์> proximity_search_openlayers_1 (แผนที่มุมมอง Openlayers ที่เราเพิ่งสร้างขึ้น)

  33. ซูมไปที่เลเยอร์> ซูมไปยังขอบเขตของเลเยอร์ที่กำหนดในการโหลดแผนที่ >proximity_search_openlayers_1

  34. กลับไปที่admin/structure/types/manage/location/display> คลิกไอคอนรูปเฟืองแล้วเปลี่ยนเปิดเลเยอร์ที่ตั้งไว้ล่วงหน้าไปยังแผนที่ที่ตั้งที่เราเพิ่งสร้าง> อัปเดต> บันทึก

Voila! เสร็จสิ้น


1
คำตอบของคุณมีรายละเอียดมากจนฉันต้องการมอบรางวัลและให้รางวัลแก่คุณโดยอัตโนมัติ: D ฉันจะลองทำตามขั้นตอนตอนนี้และแจ้งให้คุณทราบว่ามันทำงานอย่างไร
F1234k

มันไม่ใช่แค่คำตอบมันเป็นแบบฝึกหัด :)
Codium

+1 แต่สิ่งสำคัญคือต้องทราบว่าol_locatorคุณสมบัตินี้สามารถใช้กับโมดูลรุ่นใหม่กว่าได้และไม่มีข้อ จำกัด เกี่ยวกับหมายเลขเวอร์ชัน ฉันพบมัน (น่าเสียดาย) แต่คำตอบของคุณมีรายละเอียดดีมาก
Sk8erPeter

หากโมดูลนั้นเป็นรถกรุณาโพสต์ไว้ในคิวปัญหาของโมดูลของฉันด้วยสิ่งที่ไม่ทำงาน (รายละเอียดทั้งหมด) ฉันไม่มีปัญหาในการแก้ไขปัญหา แต่ฉันจำเป็นต้องรู้เกี่ยวกับพวกเขา :)

ฉันเพิ่งทดสอบ OpenLayers Locator และมันใช้งานได้ดีมากและเป็นโฆษณา ขอบคุณ @nicoz
Nigel Waters

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