Öğretici: Azure Haritalar Yönlendirme hizmeti ve Harita denetimi kullanarak rota yönergelerini görüntüleme
Bu öğreticide, azure Haritalar Yönlendirme hizmeti API'si ve Harita denetimi kullanarak baştan sona yol tarifini görüntüleme gösterilir. Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
- Web sayfasında Harita denetimi oluşturma ve görüntüleme.
- Sembol katmanları ve Çizgi katmanları tanımlayarak rotanın görüntü işlemeyi tanımlayın.
- Başlangıç ve bitiş noktalarını temsil etmek için Harita'ya GeoJSON nesneleri oluşturun ve ekleyin.
- Get Route directions API'sini kullanarak başlangıç ve bitiş noktalarından yol tarifi alın.
Örneğin tam kaynak kodunu buradan edinebilirsiniz. Canlı bir örnek burada bulunabilir.
Önkoşullar
- Azure Haritalar hesabı yapma
- Birincil anahtar veya abonelik anahtarıolarak da bilinen birincil abonelik anahtarını alın.
Harita denetimi oluşturma ve görüntüleme
Aşağıdaki adımlarda, bir web sayfasında Harita denetimi oluşturma ve görüntüleme adımları gösterilir.
Yerel makinenizde yeni bir dosya oluşturun ve bu dosyayı MapRoute.html olarak adlandırın.
Aşağıdaki HTML işaretlemesini kopyalayıp dosyaya yapıştırın.
<!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/2/atlas.min.css" type="text/css"> <script src="https://atlas.microsoft.com/sdk/javascript/mapcontrol/2/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>HTML üst bilgisi, Azure Harita Denetimi kitaplığı tarafından barındırılan CSS ve JavaScript kaynak dosyalarını içerir. Gövdenin olayı
onloadişleviniGetMapçağıran bir olaydır. Sonraki adımda Harita denetimi başlatma kodunu ekleyacağız.GetMapişlevine aşağıdaki JavaScript kodunu ekleyin.<Your Azure Maps Key>dizesini, Haritalar hesabınızdan kopyalanan birincil anahtarla değiştirin.//Instantiate a map object var map = new atlas.Map("myMap", { //Add your Azure Maps subscription key to the map SDK. Get an Azure Maps key at https://azure.com/maps authOptions: { authType: 'subscriptionKey', subscriptionKey: '<Your Azure Maps Key>' } });Dosyayı kaydedin ve tarayıcınızda açın. Basit bir görüntülenir.
Rota görüntüleme işlemeyi tanımlama
Bu öğreticide, bir çizgi katmanı kullanarak yolu işleyebilirsiniz. Başlangıç ve bitiş noktaları bir sembol katmanı kullanılarak işlenir. Satır 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.
İşleve aşağıdaki JavaScript kodunu
GetMapekleme. Bu kod, Harita denetimi olayreadyişleyicisini uygulamaya almaktadır. Bu öğreticide yer alan kodun geri kalanı olayreadyişleyicisine yerleştirilir.//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. })); });Harita denetimi olay
readyişleyicisinde, başlangıç noktasından bitiş noktasına giden yolu depolamak için bir veri kaynağı oluşturulur. Rota çizgisinin nasıl işleneceklerini tanımlamak için bir satır katmanı oluşturulur ve veri kaynağına iliştirilmiş olur. Yol çizgisinin yol etiketlerini kapsmaması için değerine sahip ikinci bir parametreyi'labels'iletiriz.Ardından, bir sembol katmanı oluşturulur ve veri kaynağına iliştirilmiş olur. Bu katman, başlangıç ve bitiş noktalarının nasıl işleneceklerini belirtir. Her nokta nesnesinde ö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 odaklı stil ifadeleri.
Başlangıç noktasını Microsoft, bitiş noktasını ise Seattle'daki bir benzin istasyonu olarak ayarlayın. Harita denetimi olay
readyişleyicisinde aşağıdaki kodu ekleyin.//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 });Bu kod, başlangıç ve bitiş noktalarını temsil etmek için veri kaynağına eklenen iki GeoJSON Noktası nesnesi oluşturur.
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.fromDataişlevi kullanılarak hesaplanır. Bu sınırlayıcı kutu, işlevini kullanarak harita kameraları görünümünü tüm yol üzerinde ayarlamak içinmap.setCamerakullanılır. Simge simgelerinin piksel boyutlarını dengelemek için doldurma eklenir. Harita denetimi setCamera özelliği hakkında daha fazla bilgi için bkz. setCamera(CameraOptions | CameraBoundsOptions & AnimationOptions) özelliği.Dosyayı MapRoute.html ve tarayıcınızı yenileyin. Harita artık Seattle üzerinde ortalandı. Göz yaşartıcı mavi pin, başlangıç noktasını işaretler. Yuvarlak mavi pin, bitiş noktasını işaretler.
Rota yönergelerini alın
Bu bölümde, rota yönlerini ve bir noktadan diğerine tahmini varış Haritalar için Azure Rota Yönergeleri API'sini nasıl kullanabileceğiniz açıklanıyor.
İpucu
Azure Haritalar Route hizmetleri, rotaları kullanılan mesafeye, trafik koşullarına ve aktarım moduna göre en hızlı, en kısa, ekonomik veya heyecan verici yollar gibi farklı rota türlerine göre planlamak için API'ler sunar. Hizmet ayrıca kullanıcıların geçmiş trafik koşullarına göre gelecekteki yolları planlamalarına da olanak sağlar. Kullanıcılar, herhangi bir zaman için rota sürelerinin tahminini görebilir. Daha fazla bilgi için bkz. Rota yönergeleri API'sini al.
GetMapişlevinde, denetimin olayreadyişleyicisi içinde JavaScript koduna aşağıdakini ekleyin.// Use SubscriptionKeyCredential with a subscription key var subscriptionKeyCredential = new atlas.service.SubscriptionKeyCredential(atlas.getSubscriptionKey()); // Use subscriptionKeyCredential to create a pipeline var pipeline = atlas.service.MapsURL.newPipeline(subscriptionKeyCredential); // Construct the RouteURL object var routeURL = new atlas.service.RouteURL(pipeline);,
SubscriptionKeyCredentialSubscriptionKeyCredentialPolicyAzure'a yapılan HTTP isteklerinin kimliğini doğrulamak Haritalar anahtarıyla bir oluşturur.atlas.service.MapsURL.newPipeline(), ilkeyiSubscriptionKeyCredentialalır ve bir İşlem Hattı örneği oluşturur. ,routeURLYönlendirme işlemleri için Azure Haritalar URL'sini temsil eder.Kimlik bilgilerini ve URL'yi ayarlandıktan sonra denetimin olay işleyicisinde aşağıdaki
readykodu ekleyin. Bu kod, başlangıç noktasından bitiş noktasına giden yolu oluşturma. AzurerouteURLHaritalar Yönlendirme hizmeti API'sini talep ediyor. Ardından, yöntemi kullanılarak yanıttan bir GeoJSON özellikgeojson.getFeatures()koleksiyonu ayıklanır ve veri kaynağına eklenir.//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); });MapRoute.html dosyasını kaydedin ve web tarayıcınızı yenileyin. Harita artık başlangıç noktasından bitiş noktasına giden yolu görüntülemeli.
Örneğin tam kaynak kodunu buradan edinebilirsiniz. Canlı bir örnek burada bulunabilir.
Kaynakları temizleme
Temizleme gerektiren bir kaynak yoktur.
Sonraki adımlar
Sonraki öğreticide, seyahat modu veya yük türü gibi kısıtlamalara sahip bir yol sorgusu oluşturma hakkında bilgi edinebilirsiniz. Daha sonra aynı haritada birden çok yol görüntüleniyor.