เอกสาร / การตั้งค่า / React / Azure Maps

การตั้งค่า Azure Maps

ขั้นตอนการใช้ Azure Maps บนเว็บผ่าน MapConductor รับรองความถูกต้องด้วยคีย์การสมัครใช้งานของ Azure

PACKAGE
react-for-azuremaps
API KEY
คีย์การสมัครใช้งาน
CSS
จำเป็น
REACT NATIVE
ไม่มี

ก่อนเริ่ม

Node.js 18 ขึ้นไป
บัญชีและคีย์การสมัครใช้งานของ Azure Maps
STEP 01

ติดตั้ง

azure-maps-control รวมอยู่ในแพ็กเกจ

terminalnpm
npm install @mapconductor/js-sdk-core @mapconductor/js-sdk-react \
            @mapconductor/react-for-azuremaps
STEP 02

โหลดสไตล์ชีต

โหลดเพียงครั้งเดียวที่จุดเริ่มต้นของแอป หากลืมจะทำให้ตำแหน่งแผนที่และรูปลักษณ์ของตัวควบคุมเสียหาย

main.tsxTypeScript
import '@mapconductor/react-for-azuremaps/style.css';
STEP 03

ส่งคีย์การสมัครใช้งาน

ส่งคีย์ไปยัง subscriptionKey ของ state hook หากว่างเปล่า แผนที่จะไม่ถูกเริ่มต้น

AzureMap.tsxTypeScript · React
const state = useAzureMapsViewState({
  subscriptionKey: import.meta.env.VITE_AZURE_MAPS_SUBSCRIPTION_KEY ?? '',
  mapDesignType: AzureMapsDesign.Road,
  cameraPosition: createMapCameraPosition({ position: TOKYO, zoom: 12 }),
});
ข้อควรระวัง
ส่งคีย์ผ่านตัวแปรสภาพแวดล้อมในเวลาบิลด์ (ใน Vite คือ import.meta.env.VITE_*) และอย่าใส่ไว้ในการจัดการซอร์สโค้ด เนื่องจากส่งไปยังฟรอนต์เอนด์ คุณต้องตั้งข้อจำกัด referrer หรือโดเมนเพื่อป้องกันความเสียหายหากคีย์ถูกเปิดเผย

ตรวจสอบ

สิ่งที่ควรเห็น

หากแผนที่ Azure Maps ปรากฏขึ้น ถือว่าเสร็จสิ้น

AzureMap.tsxTypeScript · React
import { useState } from 'react';
import { createGeoPoint, createMapCameraPosition, createMarkerState } from '@mapconductor/js-sdk-core';
import { Marker } from '@mapconductor/js-sdk-react';
import { AzureMapsDesign, AzureMapsMapView, useAzureMapsViewState } from '@mapconductor/react-for-azuremaps';
import '@mapconductor/react-for-azuremaps/style.css';

const TOKYO = createGeoPoint({ latitude: 35.6812, longitude: 139.7671 });

export function AzureMap() {
  const state = useAzureMapsViewState({
    subscriptionKey: import.meta.env.VITE_AZURE_MAPS_SUBSCRIPTION_KEY ?? '',
    mapDesignType: AzureMapsDesign.Road,
    cameraPosition: createMapCameraPosition({ position: TOKYO, zoom: 12 }),
  });
  const [markerState] = useState(() => createMarkerState({ id: 'tokyo', position: TOKYO }));

  return (
    <AzureMapsMapView state={state} style={{ height: 480 }}>
      <Marker state={markerState} />
    </AzureMapsMapView>
  );
}

ดีไซน์แผนที่

AzureMapsDesign รองรับสไตล์ของ Azure Maps

AzureMapsDesign
Notes
Road / RoadShadedRelief
แผนที่ถนนมาตรฐานพร้อมเงาภูมิประเทศ
Satellite / SatelliteRoadLabels
ภาพดาวเทียมพร้อมป้ายกำกับ
GrayscaleLight / GrayscaleDark
สำหรับฐานแผนที่ที่ใช้แสดงข้อมูล
Night
สไตล์กลางคืน
HighContrastLight / HighContrastDark
คอนทราสต์สูง
Blank / BlankAccessible
ไม่มีแผนที่ฐาน

การแก้ปัญหา

แผนที่ไม่ปรากฏ

  • ตรวจสอบว่า subscriptionKey ไม่ใช่สตริงว่าง
  • ตรวจสอบใน Azure Portal ว่าคีย์มีความถูกต้องหรือไม่

แผนที่ถูกเริ่มต้นสองครั้งในขณะพัฒนา

  • React StrictMode ทำงาน effect สองครั้ง ผู้ให้บริการแต่ละรายตรวจจับสิ่งนี้และทำลายอีกรายการหนึ่ง ดังนั้นคุณไม่จำเป็นต้องปิด StrictMode

ถัดไป

คีย์การสมัครใช้งานจะถูกส่งไปยังเบราว์เซอร์ ในการใช้งานจริง คุณควรจำกัดขอบเขตการใช้งานหรือพิจารณาวิธีการรับรองความถูกต้องของ Azure