ชั้นข้อมูล

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
เลือกแพลตฟอร์ม: Android iOS JavaScript

เลเยอร์ข้อมูลของ Google Maps มีคอนเทนเนอร์สําหรับข้อมูลเชิงพื้นที่ที่กําหนดเอง คุณสามารถใช้ชั้นข้อมูลเพื่อจัดเก็บข้อมูลที่กําหนดเอง หรือแสดงข้อมูล GeoJSON บนแผนที่ของ Google

ภาพรวม

ดูวิดีโอ DevBytes นี้เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับชั้นข้อมูล

Maps API ของ Maps ช่วยให้คุณมาร์กอัปแผนที่ที่มีการวางซ้อนได้หลากหลาย เช่น เครื่องหมาย รูปหลายเหลี่ยม รูปหลายเหลี่ยม และอื่นๆ และข้อมูลเสริมแต่ละรายการเหล่านี้จะรวมข้อมูลการจัดรูปแบบเข้ากับข้อมูลตําแหน่ง คลาส google.maps.Data คือคอนเทนเนอร์สําหรับข้อมูลเชิงพื้นที่ที่กําหนดเอง แทนที่จะเพิ่มการวางซ้อนเหล่านี้ คุณสามารถใช้ชั้นข้อมูลเพื่อเพิ่มข้อมูลทางภูมิศาสตร์ที่กําหนดเองลงในแผนที่ได้ หากข้อมูลมีรูปทรงเรขาคณิต เช่น จุด เส้น หรือรูปหลายเหลี่ยม API จะแสดงข้อมูลเหล่านี้โดยค่าเริ่มต้น เช่น เครื่องหมาย โพลีไลน์ และรูปหลายเหลี่ยม คุณจัดรูปแบบฟีเจอร์เหล่านี้ได้เหมือนกับการวางซ้อนปกติ หรือใช้กฎการจัดรูปแบบตามพร็อพเพอร์ตี้อื่นๆ ที่มีอยู่ในชุดข้อมูล

ชั้นเรียน google.maps.Data ช่วยให้คุณทําสิ่งต่อไปนี้ได้

  • วาดรูปหลายเหลี่ยมบนแผนที่
  • เพิ่มข้อมูล GeoJSON ลงในแผนที่
    GeoJSON คือมาตรฐานสําหรับข้อมูลเชิงพื้นที่บนอินเทอร์เน็ต คลาส Data ทําตามโครงสร้างของ GeoJSON ในการนําเสนอข้อมูล ทําให้แสดงข้อมูล GeoJSON ได้อย่างง่ายดาย ใช้เมธอด loadGeoJson() เพื่อนําเข้าข้อมูล GeoJSON รวมถึงจุด สตริงสตริง และรูปหลายเหลี่ยมได้อย่างง่ายดาย
  • ใช้ google.maps.Data เพื่อจําลองข้อมูลที่กําหนดเอง
    เอนทิตีในชีวิตจริงส่วนใหญ่จะมีพร็อพเพอร์ตี้อื่นๆ ที่เกี่ยวข้อง เช่น ร้านค้ามีเวลาทําการ ถนนมีความเร็วการจราจร และกลุ่มดาวเด่นของสาวๆ แต่ละคนมีสนามหญ้าที่ขายคุกกี้ เมื่อใช้ google.maps.Data คุณสามารถจําลองพร็อพเพอร์ตี้เหล่านี้และจัดรูปแบบข้อมูลให้สอดคล้องกันได้
  • เลือกวิธีแสดงข้อมูล และเปลี่ยนใจได้ทันที
    ชั้นข้อมูลช่วยให้คุณตัดสินใจเกี่ยวกับการแสดงภาพและการโต้ตอบของข้อมูลได้ ตัวอย่างเช่น เมื่อดูแผนที่ของร้านสะดวกซื้อ คุณอาจเลือกแสดงแต่ร้านค้าที่ขายตั๋วโดยสาร

วาดรูปหลายเหลี่ยม

คลาส Data.Polygon จะจัดการรูปหลายเหลี่ยมที่คดเคี้ยวให้คุณ คุณอาจส่งอาร์เรย์ของแหวนเชิงเส้นอย่างน้อย 1 วง ซึ่งกําหนดเป็นพิกัดละติจูดและลองจิจูด วงแหวนเชิงเส้นอันแรก กําหนดขอบเขตภายนอกของรูปหลายเหลี่ยม หากคุณส่งริงเชิงเส้นมากกว่า 1 วง ระบบจะใช้วงแหวนเชิงเส้นลําดับที่ 2 และ 2 ที่ตามมาเพื่อกําหนดเส้นทางภายใน (หลุม) ในรูปหลายเหลี่ยม

ตัวอย่างต่อไปนี้สร้างรูปหลายเหลี่ยมรูปสี่เหลี่ยมผืนผ้าที่มีรู 2 รู

TypeScript

// This example uses the Google Maps JavaScript API's Data layer
// to create a rectangular polygon with 2 holes in it.

function initMap(): void {
  const map = new google.maps.Map(
    document.getElementById("map") as HTMLElement,
    {
      zoom: 6,
      center: { lat: -33.872, lng: 151.252 },
    }
  );

  // Define the LatLng coordinates for the outer path.
  const outerCoords = [
    { lat: -32.364, lng: 153.207 }, // north west
    { lat: -35.364, lng: 153.207 }, // south west
    { lat: -35.364, lng: 158.207 }, // south east
    { lat: -32.364, lng: 158.207 }, // north east
  ];

  // Define the LatLng coordinates for an inner path.
  const innerCoords1 = [
    { lat: -33.364, lng: 154.207 },
    { lat: -34.364, lng: 154.207 },
    { lat: -34.364, lng: 155.207 },
    { lat: -33.364, lng: 155.207 },
  ];

  // Define the LatLng coordinates for another inner path.
  const innerCoords2 = [
    { lat: -33.364, lng: 156.207 },
    { lat: -34.364, lng: 156.207 },
    { lat: -34.364, lng: 157.207 },
    { lat: -33.364, lng: 157.207 },
  ];

  map.data.add({
    geometry: new google.maps.Data.Polygon([
      outerCoords,
      innerCoords1,
      innerCoords2,
    ]),
  });
}

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

JavaScript

// This example uses the Google Maps JavaScript API's Data layer
// to create a rectangular polygon with 2 holes in it.
function initMap() {
  const map = new google.maps.Map(document.getElementById("map"), {
    zoom: 6,
    center: { lat: -33.872, lng: 151.252 },
  });
  // Define the LatLng coordinates for the outer path.
  const outerCoords = [
    { lat: -32.364, lng: 153.207 },
    { lat: -35.364, lng: 153.207 },
    { lat: -35.364, lng: 158.207 },
    { lat: -32.364, lng: 158.207 }, // north east
  ];
  // Define the LatLng coordinates for an inner path.
  const innerCoords1 = [
    { lat: -33.364, lng: 154.207 },
    { lat: -34.364, lng: 154.207 },
    { lat: -34.364, lng: 155.207 },
    { lat: -33.364, lng: 155.207 },
  ];
  // Define the LatLng coordinates for another inner path.
  const innerCoords2 = [
    { lat: -33.364, lng: 156.207 },
    { lat: -34.364, lng: 156.207 },
    { lat: -34.364, lng: 157.207 },
    { lat: -33.364, lng: 157.207 },
  ];

  map.data.add({
    geometry: new google.maps.Data.Polygon([
      outerCoords,
      innerCoords1,
      innerCoords2,
    ]),
  });
}

window.initMap = initMap;

โหลด GeoJSON

GeoJSON เป็นมาตรฐานทั่วไปสําหรับการแชร์ข้อมูลพื้นที่ทางภูมิศาสตร์บนอินเทอร์เน็ต มีน้ําหนักเบาและอ่านง่าย จึงเหมาะสําหรับการแชร์และการทํางานร่วมกัน ชั้นข้อมูลช่วยให้คุณเพิ่มข้อมูล GeoJSON ลงใน Google Maps ได้ในโค้ดเพียงบรรทัดเดียว

map.data.loadGeoJson('google.json');

ทุกแผนที่จะมีออบเจ็กต์ map.data ซึ่งทําหน้าที่เป็นชั้นข้อมูลสําหรับข้อมูลพื้นที่ทางภูมิศาสตร์ที่กําหนดเอง ซึ่งรวมถึง GeoJSON คุณสามารถโหลดและแสดงไฟล์ GeoJSON ได้โดยการเรียกเมธอด loadGeoJSON() ของออบเจ็กต์ data ตัวอย่างด้านล่างแสดงวิธีเพิ่มแผนที่และโหลดข้อมูล GeoJSON ภายนอก

TypeScript

let map: google.maps.Map;

function initMap(): void {
  map = new google.maps.Map(document.getElementById("map") as HTMLElement, {
    zoom: 4,
    center: { lat: -28, lng: 137 },
  });

  // NOTE: This uses cross-domain XHR, and may not work on older browsers.
  map.data.loadGeoJson(
    "https://storage.googleapis.com/mapsdevsite/json/google.json"
  );
}

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

JavaScript

let map;

function initMap() {
  map = new google.maps.Map(document.getElementById("map"), {
    zoom: 4,
    center: { lat: -28, lng: 137 },
  });
  // NOTE: This uses cross-domain XHR, and may not work on older browsers.
  map.data.loadGeoJson(
    "https://storage.googleapis.com/mapsdevsite/json/google.json"
  );
}

window.initMap = initMap;
ดูตัวอย่าง

ลองใช้ตัวอย่าง

ตัวอย่าง GeoJSON

ตัวอย่างส่วนใหญ่ในหน้านี้ใช้ไฟล์ GeoJSON ทั่วไป ไฟล์นี้ระบุอักขระ 6 ตัวใน "Google" เป็นรูปหลายเหลี่ยมเหนือออสเตรเลีย โปรดคัดลอกหรือแก้ไขไฟล์นี้ขณะที่คุณทดสอบชั้นข้อมูล

หมายเหตุ: หากต้องการโหลดไฟล์ JSON จากโดเมนอื่น โดเมนนั้นจะต้องเปิดใช้การแชร์ทรัพยากรข้ามโดเมน

โปรดดูข้อความทั้งหมดของไฟล์โดยขยายลูกศรเล็กๆ ข้างคําว่า google.json

google.json

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "properties": {
        "letter": "G",
        "color": "blue",
        "rank": "7",
        "ascii": "71"
      },
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [123.61, -22.14], [122.38, -21.73], [121.06, -21.69], [119.66, -22.22], [119.00, -23.40],
            [118.65, -24.76], [118.43, -26.07], [118.78, -27.56], [119.22, -28.57], [120.23, -29.49],
            [121.77, -29.87], [123.57, -29.64], [124.45, -29.03], [124.71, -27.95], [124.80, -26.70],
            [124.80, -25.60], [123.61, -25.64], [122.56, -25.64], [121.72, -25.72], [121.81, -26.62],
            [121.86, -26.98], [122.60, -26.90], [123.57, -27.05], [123.57, -27.68], [123.35, -28.18],
            [122.51, -28.38], [121.77, -28.26], [121.02, -27.91], [120.49, -27.21], [120.14, -26.50],
            [120.10, -25.64], [120.27, -24.52], [120.67, -23.68], [121.72, -23.32], [122.43, -23.48],
            [123.04, -24.04], [124.54, -24.28], [124.58, -23.20], [123.61, -22.14]
          ]
        ]
      }
    },
    {
      "type": "Feature",
      "properties": {
        "letter": "o",
        "color": "red",
        "rank": "15",
        "ascii": "111"
      },
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [128.84, -25.76], [128.18, -25.60], [127.96, -25.52], [127.88, -25.52], [127.70, -25.60],
            [127.26, -25.79], [126.60, -26.11], [126.16, -26.78], [126.12, -27.68], [126.21, -28.42],
            [126.69, -29.49], [127.74, -29.80], [128.80, -29.72], [129.41, -29.03], [129.72, -27.95],
            [129.68, -27.21], [129.33, -26.23], [128.84, -25.76]
          ],
          [
            [128.45, -27.44], [128.32, -26.94], [127.70, -26.82], [127.35, -27.05], [127.17, -27.80],
            [127.57, -28.22], [128.10, -28.42], [128.49, -27.80], [128.45, -27.44]
          ]
        ]
      }
    },
    {
      "type": "Feature",
      "properties": {
        "letter": "o",
        "color": "yellow",
        "rank": "15",
        "ascii": "111"
      },
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [131.87, -25.76], [131.35, -26.07], [130.95, -26.78], [130.82, -27.64], [130.86, -28.53],
            [131.26, -29.22], [131.92, -29.76], [132.45, -29.87], [133.06, -29.76], [133.72, -29.34],
            [134.07, -28.80], [134.20, -27.91], [134.07, -27.21], [133.81, -26.31], [133.37, -25.83],
            [132.71, -25.64], [131.87, -25.76]
          ],
          [
            [133.15, -27.17], [132.71, -26.86], [132.09, -26.90], [131.74, -27.56], [131.79, -28.26],
            [132.36, -28.45], [132.93, -28.34], [133.15, -27.76], [133.15, -27.17]
          ]
        ]
      }
    },
    {
      "type": "Feature",
      "properties": {
        "letter": "g",
        "color": "blue",
        "rank": "7",
        "ascii": "103"
      },
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [138.12, -25.04], [136.84, -25.16], [135.96, -25.36], [135.26, -25.99], [135, -26.90],
            [135.04, -27.91], [135.26, -28.88], [136.05, -29.45], [137.02, -29.49], [137.81, -29.49],
            [137.94, -29.99], [137.90, -31.20], [137.85, -32.24], [136.88, -32.69], [136.45, -32.36],
            [136.27, -31.80], [134.95, -31.84], [135.17, -32.99], [135.52, -33.43], [136.14, -33.76],
            [137.06, -33.83], [138.12, -33.65], [138.86, -33.21], [139.30, -32.28], [139.30, -31.24],
            [139.30, -30.14], [139.21, -28.96], [139.17, -28.22], [139.08, -27.41], [139.08, -26.47],
            [138.99, -25.40], [138.73, -25.00 ], [138.12, -25.04]
          ],
          [
            [137.50, -26.54], [136.97, -26.47], [136.49, -26.58], [136.31, -27.13], [136.31, -27.72],
            [136.58, -27.99], [137.50, -28.03], [137.68, -27.68], [137.59, -26.78], [137.50, -26.54]
          ]
        ]
      }
    },
    {
      "type": "Feature",
      "properties": {
        "letter": "l",
        "color": "green",
        "rank": "12",
        "ascii": "108"
      },
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [140.14,-21.04], [140.31,-29.42], [141.67,-29.49], [141.59,-20.92], [140.14,-21.04]
          ]
        ]
      }
    },
    {
      "type": "Feature",
      "properties": {
        "letter": "e",
        "color": "red",
        "rank": "5",
        "ascii": "101"
      },
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [144.14, -27.41], [145.67, -27.52], [146.86, -27.09], [146.82, -25.64], [146.25, -25.04],
            [145.45, -24.68], [144.66, -24.60], [144.09, -24.76], [143.43, -25.08], [142.99, -25.40],
            [142.64, -26.03], [142.64, -27.05], [142.64, -28.26], [143.30, -29.11], [144.18, -29.57],
            [145.41, -29.64], [146.46, -29.19], [146.64, -28.72], [146.82, -28.14], [144.84, -28.42],
            [144.31, -28.26], [144.14, -27.41]
          ],
          [
            [144.18, -26.39], [144.53, -26.58], [145.19, -26.62], [145.72, -26.35], [145.81, -25.91],
            [145.41, -25.68], [144.97, -25.68], [144.49, -25.64], [144, -25.99], [144.18, -26.39]
          ]
        ]
      }
    }
  ]
}

จัดรูปแบบข้อมูล GeoJSON

ใช้ Data.setStyle() เพื่อระบุลักษณะข้อมูล เมธอด setStyle() จะใช้ออบเจ็กต์StyleOptions ของจริงตามฟังก์ชัน หรือฟังก์ชันที่ใช้คํานวณรูปแบบสําหรับแต่ละฟีเจอร์

กฎสไตล์ง่ายๆ

วิธีที่ง่ายที่สุดในการจัดรูปแบบฟีเจอร์คือการส่งออบเจ็กต์ StyleOptions ตามตัวอักษรไปยัง setStyle() การดําเนินการนี้จะกําหนดสไตล์เดียวสําหรับแต่ละฟีเจอร์ในคอลเล็กชันของคุณ โปรดทราบว่าฟีเจอร์แต่ละประเภทจะแสดงผลตัวเลือกย่อยๆ ได้เท่านั้น ซึ่งหมายความว่าฟีเจอร์นี้อาจรวมสไตล์ของ ฟีเจอร์ต่างๆ ในสัญพจน์ของออบเจ็กต์ได้ ตัวอย่างเช่น ข้อมูลโค้ดด้านล่างตั้งค่าทั้ง icon ที่กําหนดเองซึ่งจะส่งผลต่อเรขาคณิตของจุดเท่านั้น และ fillColor ซึ่งมีผลเฉพาะกับรูปหลายเหลี่ยม

map.data.setStyle({
  icon: '//example.com/path/to/image.png',
  fillColor: 'green'
});

ดูข้อมูลเพิ่มเติมเกี่ยวกับชุดค่าผสมของสไตล์/ฟีเจอร์ที่ถูกต้องได้ที่ตัวเลือกสไตล์

ด้านล่างคือตัวอย่างการตั้งค่าเส้นโครงร่างและสีเติมสําหรับฟีเจอร์ต่างๆ โดยใช้ออบเจ็กต์ StyleOptions ของสัญพจน์ โปรดสังเกตว่ารูปหลายเหลี่ยมแต่ละรูปจัดรูปแบบเดียวกัน

// Set the stroke width, and fill color for each polygon
map.data.setStyle({
  fillColor: 'green',
  strokeWeight: 1
});

กฎรูปแบบประกาศ

หากคุณต้องการอัปเดตรูปแบบของการวางซ้อนจํานวนมาก เช่น เครื่องหมายหรือโพลีไลน์ โดยปกติแล้วคุณจะต้องทําซ้ําการวางซ้อนแต่ละรายการบนแผนที่ และตั้งค่ารูปแบบของแต่ละรายการ ชั้นข้อมูลช่วยให้คุณตั้งกฎประกาศ และจะนําไปใช้กับทั้งชุดข้อมูลได้ เมื่อข้อมูลหรือกฎได้รับการอัปเดต ระบบจะจัดรูปแบบการจัดรูปแบบกับทุกฟีเจอร์โดยอัตโนมัติ คุณใช้พร็อพเพอร์ตี้ฟีเจอร์เพื่อปรับแต่งสไตล์ได้

ตัวอย่างเช่น โค้ดด้านล่างตั้งค่าสีของอักขระแต่ละตัวใน google.json ด้วยการตรวจสอบตําแหน่งในชุดอักขระ ASCII ในกรณีนี้ เราได้เข้ารหัสตําแหน่งอักขระพร้อมด้วยข้อมูลของเรา

// Color Capital letters blue, and lower case letters red.
// Capital letters are represented in ascii by values less than 91
map.data.setStyle(function(feature) {
    var ascii = feature.getProperty('ascii');
    var color = ascii > 91 ? 'red' : 'blue';
    return {
      fillColor: color,
      strokeWeight: 1
    };
});

นํารูปแบบออก

หากต้องการนํารูปแบบใดออก ให้ส่งผ่านออบเจ็กต์ที่ว่างเปล่าตามตัวอักษรไปยังเมธอด setStyles()

// Remove custom styles.
map.data.setStyle({});

การดําเนินการนี้จะนํารูปแบบที่กําหนดเองที่คุณระบุไว้ออก และฟีเจอร์จะแสดงโดยใช้รูปแบบเริ่มต้น แต่หากไม่ต้องการแสดงฟีเจอร์อีกต่อไป ให้ตั้งค่าพร็อพเพอร์ตี้ visible เป็น StyleOptions เป็น false

// Hide the Data layer.
map.data.setStyle({visible: false});

ลบล้างรูปแบบเริ่มต้น

โดยทั่วไป กฎการจัดรูปแบบใช้กับทุกฟีเจอร์ในชั้นข้อมูล อย่างไรก็ตาม ในบางครั้งคุณต้องการใช้กฎการจัดรูปแบบพิเศษกับฟีเจอร์บางอย่าง เช่น เป็นวิธีไฮไลต์ฟีเจอร์เมื่อคลิก

หากต้องการใช้กฎการจัดรูปแบบพิเศษ ให้ใช้เมธอด overrideStyle() พร็อพเพอร์ตี้ใดก็ตามที่คุณเปลี่ยนไปใช้เมธอด overrideStyle() จะมีผลนอกเหนือจากรูปแบบส่วนกลางที่คุณระบุไว้ใน setStyle() แล้ว ตัวอย่างเช่น โค้ดด้านล่างจะเปลี่ยนสีเติมของรูปหลายเหลี่ยมเมื่อคลิก แต่จะไม่ตั้งค่าสไตล์อื่นๆ

// Set the global styles.
map.data.setStyle({
  fillColor: 'green',
  strokeWeight: 3
});

// Set the fill color to red when the feature is clicked.
// Stroke weight remains 3.
map.data.addListener('click', function(event) {
   map.data.overrideStyle(event.feature, {fillColor: 'red'});
});

เรียกใช้เมธอด revertStyle() เพื่อนําการลบล้างรูปแบบทั้งหมดออก

ตัวเลือกสไตล์

ตัวเลือกที่ใช้ได้ในการจัดรูปแบบฟีเจอร์แต่ละรายการจะขึ้นอยู่กับประเภทของฟีเจอร์ ตัวอย่างเช่น fillColor จะแสดงผลเฉพาะรูปเรขาคณิตบนรูปหลายเหลี่ยมเท่านั้น ในขณะที่ icon จะปรากฏเฉพาะในรูปเรขาคณิตแบบจุด ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบสําหรับการอ้างอิง StyleOptions

ใช้ได้กับพื้นที่ทางภูมิศาสตร์ทั้งหมด

  • clickable: หากเป็น true ฟีเจอร์นี้จะได้รับเหตุการณ์เมาส์และการแตะ
  • visible: หากเป็น true ฟีเจอร์นี้จะปรากฏขึ้น
  • zIndex: ทุกสถานที่จะแสดงบนแผนที่ตามลําดับของ zIndex โดยค่าที่สูงกว่าจะแสดงอยู่หน้าฟีเจอร์ที่มีค่าต่ํากว่า ตัวทําเครื่องหมายจะแสดงด้านหน้าสตริงและรูปหลายเหลี่ยมเสมอ

ใช้ได้กับเรขาคณิตที่เป็นจุด

  • cursor: เคอร์เซอร์เมาส์เพื่อแสดงเมื่อวางเหนือ
  • icon: ไอคอนที่จะแสดงสําหรับเรขาคณิตของจุด
  • shape: กําหนดการแมปรูปภาพที่ใช้สําหรับตรวจจับ Hit
  • title: ข้อความ Rollover

ใช้ได้กับรูปทรงเรขาคณิตในบรรทัด

  • strokeColor: สีเส้นโครงร่าง ระบบรองรับสี CSS3 ทุกสี ยกเว้นสีที่ขยายได้
  • strokeOpacity: ความทึบแสงของเส้นโครงร่างระหว่าง 0.0 ถึง 1.0
  • strokeWeight: ความกว้างของเส้นโครงร่างในหน่วยพิกเซล

ใช้ได้กับรูปทรงเรขาคณิตแบบรูปหลายเหลี่ยม

  • fillColor: สีเติม ระบบรองรับสี CSS3 ทุกสี ยกเว้นสีที่ขยายได้
  • fillOpacity: ความทึบแสงระหว่าง 0.0 ถึง 1.0.
  • strokeColor: สีเส้นโครงร่าง ระบบรองรับสี CSS3 ทุกสี ยกเว้นสีที่ขยายได้
  • strokeOpacity: ความทึบแสงของเส้นโครงร่างระหว่าง 0.0 ถึง 1.0
  • strokeWeight: ความกว้างของเส้นโครงร่างในหน่วยพิกเซล

เพิ่มเครื่องจัดการเหตุการณ์

ฟีเจอร์ตอบสนองต่อเหตุการณ์ต่างๆ เช่น mouseup หรือ mousedown คุณสามารถเพิ่ม Listener เหตุการณ์เพื่อให้ผู้ใช้โต้ตอบกับข้อมูลบนแผนที่ได้ ในตัวอย่างด้านล่าง เราเพิ่มเหตุการณ์เมาส์โอเวอร์ซึ่งแสดงข้อมูลเกี่ยวกับฟีเจอร์ดังกล่าวภายใต้เคอร์เซอร์เมาส์

// Set mouseover event for each feature.
map.data.addListener('mouseover', function(event) {
  document.getElementById('info-box').textContent =
      event.feature.getProperty('letter');
});

เหตุการณ์ชั้นข้อมูล

เหตุการณ์ต่อไปนี้เป็นฟีเจอร์ทั่วไปของฟีเจอร์ทุกประเภท โดยไม่คํานึงถึงรูปทรงเรขาคณิต

  • addfeature
  • click
  • dblclick
  • mousedown
  • mouseout
  • mouseover
  • mouseup
  • removefeature
  • removeproperty
  • rightclick
  • setgeometry
  • setproperty

ดูข้อมูลเพิ่มเติมเกี่ยวกับเหตุการณ์เหล่านี้ได้ในเอกสารประกอบอ้างอิงสําหรับคลาส google.maps.data

เปลี่ยนรูปลักษณ์แบบไดนามิก

คุณตั้งค่ารูปแบบของชั้นข้อมูลได้โดยการส่งผ่านฟังก์ชันที่คํานวณรูปแบบของฟีเจอร์แต่ละรายการไปยังเมธอด google.maps.data.setStyle() โดยระบบจะเรียกฟังก์ชันนี้ทุกครั้งที่มีการอัปเดตพร็อพเพอร์ตี้ของฟีเจอร์

ในตัวอย่างด้านล่าง เราเพิ่ม Listener เหตุการณ์สําหรับเหตุการณ์ click ที่อัปเดตพร็อพเพอร์ตี้ isColorful ของฟีเจอร์ การจัดรูปแบบของฟีเจอร์จะอัปเดตเพื่อแสดงการเปลี่ยนแปลงทันทีที่ตั้งค่าพร็อพเพอร์ตี้

// Color each letter gray. Change the color when the isColorful property
// is set to true.
map.data.setStyle(function(feature) {
  var color = 'gray';
  if (feature.getProperty('isColorful')) {
    color = feature.getProperty('color');
  }
  return /** @type {!google.maps.Data.StyleOptions} */({
    fillColor: color,
    strokeColor: color,
    strokeWeight: 2
  });
});

// When the user clicks, set 'isColorful', changing the color of the letters.
map.data.addListener('click', function(event) {
  event.feature.setProperty('isColorful', true);
});

// When the user hovers, tempt them to click by outlining the letters.
// Call revertStyle() to remove all overrides. This will use the style rules
// defined in the function passed to setStyle()
map.data.addListener('mouseover', function(event) {
  map.data.revertStyle();
  map.data.overrideStyle(event.feature, {strokeWeight: 8});
});

map.data.addListener('mouseout', function(event) {
  map.data.revertStyle();
});