Öğretici: Azure Haritalar Yönlendirme hizmeti ve Harita denetimini kullanarak yol tariflerini görüntüleme

Bu öğreticide, Azure Haritalar Yönlendirme hizmeti API'sini ve Eşleme denetimini kullanarak baştan sona yol tariflerini görüntüleme adımları gösterilmektedir. Bu öğreticide şunların nasıl yapılacağını gösterilmektedir:

Kaynak kodu için GitHub'daki yol öğreticisine bakın. Canlı örnek için bkz . Hedefe yönlendirme.

Önkoşullar

Harita denetimini oluşturma ve görüntüleme

Aşağıdaki adımlarda, bir web sayfasında Harita denetiminin nasıl oluşturulacağı ve görüntüleneceği gösterilmektedir.

  1. Yerel makinenizde yeni bir dosya oluşturun ve bu dosyayı MapRoute.html olarak adlandırın.

  2. Aşağıdaki HTML kodunu dosyaya ekleyin:

    <!DOCTYPE html>
    <html>
    <head>
        <title>Map Route</title>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    
        <!-- Add references to the Azure Maps Map control JavaScript and CSS files. -->
        <link rel="stylesheet" href="https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.css" type="text/css">
        <script src="https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.js"></script>
    
        <!-- Add a reference to the Azure Maps Services Module JavaScript file. -->
        <script src="https://atlas.microsoft.com/sdk/javascript/service/2/atlas-service.min.js"></script>
    
        <script>
            var map, datasource, client;
    
            function GetMap() {
                //Add Map Control JavaScript code here.
            }
        </script>
        <style>
            html,
            body {
                width: 100%;
                height: 100%;
                padding: 0;
                margin: 0;
            }
    
            #myMap {
                width: 100%;
                height: 100%;
            }
        </style>
    </head>
    <body onload="GetMap()">
        <div id="myMap"></div>
    </body>
    </html>
    

    Yukarıdaki HTML hakkında bilmeniz gereken bazı şeyler:

    • HTML üst bilgisi, Azure Harita Denetimi kitaplığı tarafından barındırılan CSS ve JavaScript kaynak dosyalarını içerir.
    • Sayfanın onload gövdesindeki olay, sayfanın gövdesi yüklendiğinde işlevini çağırır GetMap .
    • İşlev, GetMap Azure Haritalar API'lerine erişmek için kullanılan satır içi JavaScript kodunu içerir. Sonraki adımda eklenir.
  3. Ardından, son adımda eklenen kodun GetMap hemen altına aşağıdaki JavaScript kodunu işleve ekleyin. Bu kod bir harita denetimi oluşturur ve sağladığınız Azure Haritalar abonelik anahtarlarınızı kullanarak bu denetimi başlatır. Dizeyi<Your Azure Maps Key>, Haritalar hesabınızdan kopyaladığınız Azure Haritalar birincil anahtarla değiştirdiğinizden emin olun.

    //Instantiate a map object
    var map = new atlas.Map('myMap', {
        // Replace <Your Azure Maps Key> with your Azure Maps subscription key. https://aka.ms/am-primaryKey
        authOptions: {
           authType: 'subscriptionKey',
           subscriptionKey: '<Your Azure Maps Key>'
        }
    });
    

    Yukarıdaki JavaScript hakkında bilmeniz gereken bazı şeyler:

    • Bu, Azure Haritalar hesap anahtarınız için Harita Denetimi API'sini başlatan işlevin çekirdeğidirGetMap.
    • atlas, Azure Haritalar API'sini ve ilgili görsel bileşenleri içeren ad alanıdır.
    • atlas.Map, görsel ve etkileşimli bir web haritası için gerekli denetimi sağlar.
  4. Değişikliklerinizi dosyaya kaydedin ve HTML sayfasını bir tarayıcıda açın. Gösterilen harita, Azure Haritalar hesabı abonelik anahtarınızı kullanarak arayarak atlas.Map yapabileceğiniz en temel haritadır.

    A screenshot showing the most basic map that you can make by calling `atlas.Map` using your Azure Maps account key.

Yol görüntüleme işlemeyi tanımlama

Bu öğreticide, yol bir çizgi katmanı kullanılarak işlenir. Başlangıç ve bitiş noktaları bir sembol katmanı kullanılarak işlenir. Çizgi katmanları ekleme hakkında daha fazla bilgi için bkz . Haritaya çizgi katmanı ekleme. Sembol katmanları hakkında daha fazla bilgi edinmek için bkz . Haritaya sembol katmanı ekleme.

  1. GetMap işlevinde haritanın başlatıldığı bölümün altına aşağıdaki JavaScript kodunu ekleyin.

    //Wait until the map resources are ready.
    map.events.add('ready', function() {
    
        //Create a data source and add it to the map.
        datasource = new atlas.source.DataSource();
        map.sources.add(datasource);
    
        //Add a layer for rendering the route lines and have it render under the map labels.
        map.layers.add(new atlas.layer.LineLayer(datasource, null, {
            strokeColor: '#2272B9',
            strokeWidth: 5,
            lineJoin: 'round',
            lineCap: 'round'
        }), 'labels');
    
        //Add a layer for rendering point data.
        map.layers.add(new atlas.layer.SymbolLayer(datasource, null, {
            iconOptions: {
                image: ['get', 'icon'],
                allowOverlap: true
           },
            textOptions: {
                textField: ['get', 'title'],
                offset: [0, 1.2]
            },
            filter: ['any', ['==', ['geometry-type'], 'Point'], ['==', ['geometry-type'], 'MultiPoint']] //Only render Point or MultiPoints in this layer.
        }));
    });
    

    Yukarıdaki JavaScript hakkında bilmeniz gereken bazı şeyler:

    • Bu kod, Eşleme denetiminin ready olay işleyicisini uygular. Bu öğreticideki kodun geri kalanı olay işleyicisinin ready içine yerleştirilir.
    • Harita denetiminin ready olay işleyicisinde, yolu baştan sona depolamak için bir veri kaynağı oluşturulur.
    • Yol çizgisinin nasıl işlendiğini tanımlamak için bir çizgi katmanı oluşturulur ve veri kaynağına eklenir. Yol çizgisinin yol etiketlerini kapsamadığından emin olmak için değerini 'labels'içeren ikinci bir parametre geçirin.

    Ardından, bir sembol katmanı oluşturulur ve veri kaynağına eklenir. Bu katman, başlangıç ve bitiş noktalarının nasıl işlendiğini belirtir. Her nokta nesnesinde bulunan özelliklerden simge görüntüsü ve metin etiketi bilgilerini almak için ifadeler eklendi. İfadeler hakkında daha fazla bilgi edinmek için bkz . Veri temelli stil ifadeleri.

  2. Ardından Başlangıç noktasını Microsoft'ta, bitiş noktasını ise Seattle'daki bir benzin istasyonunda ayarlayın. Başlat ve noktalar, Eşleme denetiminin ready olay işleyicisine aşağıdaki kod eklenerek oluşturulur:

    //Create the GeoJSON objects which represent the start and end points of the route.
    var startPoint = new atlas.data.Feature(new atlas.data.Point([-122.130137, 47.644702]), {
        title: "Redmond",
        icon: "pin-blue"
    });
    
    var endPoint = new atlas.data.Feature(new atlas.data.Point([-122.3352, 47.61397]), {
        title: "Seattle",
        icon: "pin-round-blue"
    });
    
    //Add the data to the data source.
    datasource.add([startPoint, endPoint]);
    
    map.setCamera({
        bounds: atlas.data.BoundingBox.fromData([startPoint, endPoint]),
        padding: 80
    });
    

    Yukarıdaki JavaScript hakkında bilmeniz gereken bazı şeyler:

    • Bu kod, başlangıç ve bitiş noktalarını göstermek için iki GeoJSON Noktası nesnesi oluşturur ve bu nesneler daha sonra veri kaynağına eklenir.
    • Son kod bloğu, başlangıç ve bitiş noktalarının enlem ve boylamını kullanarak kamera görünümünü ayarlar.
    • Başlangıç ve bitiş noktaları veri kaynağına eklenir.
    • Başlangıç ve bitiş noktaları için sınırlayıcı kutu, atlas.data.BoundingBox.fromData işlevi kullanılarak hesaplanır. Bu sınırlayıcı kutu, işlevini kullanarak map.setCamera harita kameraları görünümünü tüm rota üzerinde ayarlamak için kullanılır.
    • Doldurma, sembol simgelerinin piksel boyutlarını dengelemek için eklenir.

    Harita denetiminin set Kamera özelliği hakkında daha fazla bilgi için set Kamera(Kamera Options | Kamera BoundsOptions & AnimationOptions) Özellik.

  3. MapRoute.html dosyasını kaydedin ve tarayıcınızı yenileyin. Harita şimdi Seattle üzerinde ortalandı. Mavi damla raptiye başlangıç noktasını işaretler. Mavi yuvarlak raptiye bitiş noktasını işaretler.

    A screenshot showing a map with a route containing a blue teardrop pin marking the start point at Microsoft in Redmond Washington and a blue round pin marking the end point at a gas station in Seattle.

Yol tariflerini alma

Bu bölümde, yol tariflerini ve tahmini varış zamanını bir noktadan diğerine almak için Azure Haritalar Yol Tarifleri API'sinin nasıl kullanılacağı gösterilmektedir.

Bahşiş

Azure Haritalar Rota hizmetleri, uzaklık, trafik koşulları ve kullanılan taşıma modu temelinde en hızlı, en kısa, eko veya heyecan verici yollar gibi farklı rota türlerine göre rotaları planlamak için API'ler sunar. Hizmet ayrıca kullanıcıların geçmiş trafik koşullarına göre gelecekteki yolları planlamasına da olanak tanır. Kullanıcılar herhangi bir süre için rota sürelerinin tahminini görebilir. Daha fazla bilgi için bkz . Yol tarifleri API'sini alma.

  1. işlevinde GetMap , denetimin olay işleyicisinin ready içine JavaScript koduna aşağıdakileri ekleyin.

    //Use MapControlCredential to share authentication between a map control and the service module.
    var pipeline = atlas.service.MapsURL.newPipeline(new atlas.service.MapControlCredential(map));
    
    //Construct the RouteURL object
    var routeURL = new atlas.service.RouteURL(pipeline);
    
  2. Kimlik bilgilerini ve URL'yi ayarladıktan sonra, denetimin ready olay işleyicisinin sonuna aşağıdaki kodu ekleyin.

    //Start and end point input to the routeURL
    var coordinates= [[startPoint.geometry.coordinates[0], startPoint.geometry.coordinates[1]], [endPoint.geometry.coordinates[0], endPoint.geometry.coordinates[1]]];
    
    //Make a search route request
    routeURL.calculateRouteDirections(atlas.service.Aborter.timeout(10000), coordinates).then((directions) => {
        //Get data features from response
        var data = directions.geojson.getFeatures();
        datasource.add(data);
    });
    

    Yukarıdaki JavaScript hakkında bilmeniz gereken bazı şeyler:

    • Bu kod, başlangıçtan bitiş noktasına kadar olan yolu oluşturur.
    • Azure Haritalar routeURL Yönlendirme hizmeti API'sinin yol tariflerini hesaplamasını istemektedir.
    • Yanıttan bir GeoJSON özellik koleksiyonu daha sonra yöntemi kullanılarak geojson.getFeatures() ayıklanır ve veri kaynağına eklenir.
  3. MapRoute.html dosyasını kaydedin ve web tarayıcınızı yenileyin. Harita artık başlangıçtan bitiş noktalarına kadar olan yolu görüntülemelidir.

    A screenshot showing a map that demonstrates the Azure Map control and Route service.

Sonraki adımlar

Sonraki öğreticide, seyahat modu veya kargo türü gibi kısıtlamalar içeren bir rota sorgusunun nasıl oluşturulacağı gösterilmektedir. Daha sonra aynı haritada birden çok yol görüntüleyebilirsiniz.