KML, Google Earth gibi bir Earth tarayıcısında coğrafi verileri görüntülemek için kullanılan bir dosya biçimidir. KML yuvalanmış öğeler ve öznitelikler içeren etikete dayanan bir yapı kullanır ve XML standartlarını esas alır. Tüm etiketler büyük/küçük harfe duyarlıdır ve tam olarak KML Referansı'nda listelendiği şekilde görünmelidir. Referans'ta hangi etiketlerin isteğe bağlı olduğu belirtilmektedir. Belirli bir öğe içinde etiketler Referans'ta gösterildiği sırada görünmelidir. KML'de yeniyseniz, bir KML dosyasının temel yapısı ve en sık kullanılan etiketler hakkında bilgi edinmeye başlamak için bu dokümanı ve beraberindeki örnek dosyaları (SamplesInEarth) keşfedin. İlk bölümde, Google Earth kullanıcı arayüzü ile oluşturulabilecek özellikler açıklanmaktadır. Bu özellikler yer işaretleri, açıklamalar, zemin bindirmeleri, yollar ve çokgenler içerir. İkinci bölümde, KML'yi bir metin düzenleyiciyle yazmayı gerektiren özellikler açıklanmaktadır. Bir metin dosyası .KML veya .kmz uzantısıyla kaydedildiğinde Earth tarayıcıları bu dosyayı nasıl göstereceğini bilir. |
İpucu: Google Earth'teki bir özelliğin KML "kodunu" görmek için, özelliği Google Earth'ün 3D Görüntüleyici'de sağ tıklayıp Kopyala'yı seçmeniz yeterlidir. Ardından, pano içeriğini herhangi bir metin düzenleyiciye yapıştırın. Google Earth'te görüntülenen görsel özellik, KML metninin eşdeğerine dönüştürülür. Bu özelliği mutlaka deneyin.
Burada açıklanan örneklerin tümü KML Samples dosyasında yer alır. Google Earth'teki örnekleri görmek için bu dosyayı indirerek başlayın.
Daha Fazla Bilgi Edinmek İçin
KML 2.2 Referansı, KML dosya biçimiyle ilgili ayrıntıları sağlar. XML hakkında bilgi sahibiyseniz KML 2.2 Şemasını da inceleyebilirsiniz.
KML'deki temel özelliklerden bazılarının nasıl kullanılacağıyla ilgili tartışma için Geliştirici Kılavuzu'na bakın.
İçindekiler
Temel KML Dokümanları
En basit KML belgeleri, doğrudan Google Earth'te yazılabilen bir metin düzenleyicide KML'yi düzenlemeniz veya oluşturmanız gerekmez. Yer işaretleri, zemin bindirmeleri, yollar ve çokgenlerin tümü doğrudan Google Earth'te yazılabilir.
Yer işaretleri
Yer işareti, Google Earth'te en sık kullanılan özelliklerden biridir. Simge olarak sarı bir raptiye kullanarak dünyanın yüzeyindeki bir konumu işaretler. En basit Yer İşareti, yalnızca Yer İşaretinin konumunu belirten bir <Point> öğesi içerir. Yer İşareti için ad ve özel bir simge belirtebilir ve buna başka geometri öğeleri de ekleyebilirsiniz.
Google Earth'te KML Örnekler dosyasını açın ve Yer İşaretleri alt klasörünü genişletin. Bu klasörde üç farklı yer işareti türü bulunur: basit, kayan ve aktarılmış. Basit yer işaretinin KML kodu aşağıdaki gibidir:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Placemark>
<name>Simple placemark</name>
<description>Attached to the ground. Intelligently places itself at the height of the underlying terrain.</description>
<Point>
<coordinates>-122.0822035425683,37.42228990140251,0</coordinates>
</Point>
</Placemark> </kml>
Bu dosyanın yapısı aşağıdaki gibidir:
- Bir XML başlığı. Bu, her KML dosyasındaki 1. satırdır. Bu satırdan önce boşluk veya başka karakterler gösterilemez.
- KML ad alanı beyanı. Bu, her KML 2.2 dosyasındaki 2. satırdır.
- Aşağıdaki öğeleri içeren bir yer işareti nesnesi:
- Yer işareti için etiket olarak kullanılan bir ad
- Yer işaretine eklenmiş "balonda" görünen bir açıklama
- Yer İşareti'nin Google yüzeyindeki konumunu belirten bir Nokta (boylam, enlem ve isteğe bağlı rakım)
Yer işaretinin yerini merak ediyorsanız, Google Earth'ün geliştirildiği Google Bina 41'in tam üzerinde!
Kullanıcılar Google Earth'te genellikle "yer işareti" olarak düşünürken aslında KML'de <Point> alt öğesi içeren bir <bookmark> öğesidir. Nokta Yer İşareti, Google Earth'ün 3D Görüntüleyicisinde simge ve etiket çizmenin tek yoludur. Varsayılan olarak simge, bilinen sarı raptiyedir. KML'de bir <bookmark> öğesi, LineString, Polygon veya Model gibi bir ya da daha fazla geometrik öğe içerebilir. Ancak yalnızca Noktalı <Yer İşareti> simgesi ve etiketi olabilir. Nokta, simgeyi yerleştirmek için kullanılır, ancak Noktanın grafiksel bir gösterimi yoktur.
Yer İşaretlerinde Açıklayıcı HTML
KML Samples dosyası, Yer İşareti metniyle yapabileceğiniz neredeyse her şeyin bir örneğini içerir. Bağlantılar, yazı tipi boyutları, stiller ve renkler ekleyebilir, metin hizalamasını ve tabloları belirtebilirsiniz. Tam listeyi görmek isterseniz "Açıklayıcı HTML" Yer İşareti örneğini (Stiller ve İşaretleme klasöründe) kopyalayıp bir metin düzenleyiciye yapıştırın.
Google Earth'te otomatik işaretleme (4.0 ve sonraki sürümler)
Google Earth 4.0, www.google.com gibi metinleri kullanıcının tıklayabileceği etkin köprülere otomatik olarak dönüştüren bir otomatik işaretleme özelliğine sahiptir. <description> etiketinin içindeki metin, <Snippet> etiketi ve <BalloonStyle> öğesinin <text> öğesi otomatik olarak standart HTTP köprülerine dönüştürülür. <a href= ...> etiketlerini kendiniz eklemeniz gerekmez.
CDATA Öğesini Kullanma
Standart HTML'yi bir <description> etiketinin içine yazmak istiyorsanız bunu bir CDATA etiketinin içine yerleştirebilirsiniz. Aksi takdirde, Google Earth'ün HTML'yi yanlış bir şekilde ayrıştırmasını önlemek için açılı ayraçların varlık referansları olarak yazılması gerekir (örneğin, > simgesi > ve < simgesi < olarak yazılır). Bu, XML'in standart bir özelliğidir ve Google Earth'e özgü değildir.
CDATA etiketleri ve CDATA içermeyen HTML işaretlemeleri arasındaki farkı göz önünde bulundurun. İlk olarak, CDATA etiketleri içeren <description> bilgisini aşağıda bulabilirsiniz:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Document> <Placemark> <name>CDATA example</name> <description> <![CDATA[ <h1>CDATA Tags are useful!</h1> <p><font color="red">Text is <i>more readable</i> and <b>easier to write</b> when you can avoid using entity references.</font></p> ]]> </description> <Point> <coordinates>102.595626,14.996729</coordinates> </Point> </Placemark> </Document> </kml>
Burada, CDATA etiketi içermeyen <description> açıklaması verilmiştir. Böylece özel karakterler, varlık referanslarını kullanmalıdır:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Document> <Placemark> <name>Entity references example</name> <description> <h1>Entity references are hard to type!</h1> <p><font color="green">Text is <i>more readable</i> and <b>easier to write</b> when you can avoid using entity references.</font></p> </description> <Point> <coordinates>102.594411,14.998518</coordinates> </Point> </Placemark> </Document> </kml>
Zemin Bindirmeler
Zemin bindirmeler, bir resmi Dünya'nın arazisine "çizmenize" olanak tanır. <Icon> öğesi, yer paylaşımlı resim içeren .jpg dosyasının bağlantısını içerir. 2001'de Etna Dağı'nın patladığını gösteren KML Samples dosyasındaki örnek yer paylaşımı şöyledir:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Folder>
<name>Ground Overlays</name>
<description>Examples of ground overlays</description>
<GroundOverlay>
<name>Large-scale overlay on terrain</name>
<description>Overlay shows Mount Etna erupting on July 13th, 2001.</description>
<Icon>
<href>https://developers.google.com/kml/documentation/images/etna.jpg</href>
</Icon>
<LatLonBox>
<north>37.91904192681665</north>
<south>37.46543388598137</south>
<east>15.35832653742206</east>
<west>14.60128369746704</west>
<rotation>-0.1556640799496235</rotation>
</LatLonBox>
</GroundOverlay>
</Folder> </kml>
Dosyanın ilk örnektekiyle aynı iki satırla başladığına dikkat edin: XML başlığı ve KML ad alanı beyanı.
Bu örnekte, içeriği gruplandırmak ve etiketlemek için bir mekanizma olarak "Klasör Yer Paylaşımları" adlı bir klasör kullanılmaktadır. KML Samples dosyasını (Google Earth) yüklediğinizde, Klasörün Yerler panelinde nasıl göründüğüne dikkat edin.
Bir zemin bindirmesinin konumlandırması <LatLonBox> etiketiyle kontrol edilir. Sınır değerleri, kuzey ile güney enlemleri ve doğu ile batı boylamları için verilir. Ayrıca, y ekseni tablo kuzeyiyle çakışmayan resimler için döndürme değerleri verilir. Bu örnekte, yer paylaşımı için bir JPEG resmi kullanılmaktadır. Google Earth ayrıca BMP, GIF, TIFF, TGA ve PNG biçimlerini destekler.
Yollar
Google Earth'te birçok farklı yol türü oluşturulabilir ve verilerinizle yaratıcı bir şekilde çalışmak çok kolaydır. KML'de bir yol, <LineString> öğesi tarafından oluşturulur. Yollar klasöründeki "Mutlak Ekstremlenmiş" örneğine göz atın. Aşağıdaki örnekten bu şeklin nasıl oluşturulduğunu görebilirsiniz:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Document>
<name>Paths</name>
<description>Examples of paths. Note that the tessellate tag is by default
set to 0. If you want to create tessellated lines, they must be authored
(or edited) directly in KML.</description> <Style id="yellowLineGreenPoly">
<LineStyle>
<color>7f00ffff</color>
<width>4</width>
</LineStyle>
<PolyStyle>
<color>7f00ff00</color>
</PolyStyle>
</Style> <Placemark>
<name>Absolute Extruded</name>
<description>Transparent green wall with yellow outlines</description>
<styleUrl>#yellowLineGreenPoly</styleUrl>
<LineString>
<extrude>1</extrude>
<tessellate>1</tessellate>
<altitudeMode>absolute</altitudeMode>
<coordinates> -112.2550785337791,36.07954952145647,2357
-112.2549277039738,36.08117083492122,2357
-112.2552505069063,36.08260761307279,2357
-112.2564540158376,36.08395660588506,2357
-112.2580238976449,36.08511401044813,2357
-112.2595218489022,36.08584355239394,2357
-112.2608216347552,36.08612634548589,2357
-112.262073428656,36.08626019085147,2357
-112.2633204928495,36.08621519860091,2357
-112.2644963846444,36.08627897945274,2357
-112.2656969554589,36.08649599090644,2357 </coordinates>
</LineString> </Placemark>
</Document> </kml>
Yerin üzerindeki rakımda gerçekten tek bir çizgi çizildiğini unutmayın. <tessellate> etiketi, çizgiyi daha küçük parçalara ayırır ve <extrude> etiketi çizgiyi zemine kadar uzatır.
Poligonlar
Basit binaları ve diğer şekilleri oluşturmak için Poligonları kullanabilirsiniz. Örnekler için KML Örnekleri dosyasındaki Poligonlar klasörüne göz atın.
Pentagon örneği, basit iç ve dış kabukların zemine çekilip zemine yerleştirilmesiyle oluşturulmuştur. Kod aşağıda verilmiştir :
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Placemark>
<name>The Pentagon</name>
<Polygon>
<extrude>1</extrude>
<altitudeMode>relativeToGround</altitudeMode>
<outerBoundaryIs>
<LinearRing>
<coordinates>
-77.05788457660967,38.87253259892824,100
-77.05465973756702,38.87291016281703,100
-77.05315536854791,38.87053267794386,100
-77.05552622493516,38.868757801256,100
-77.05844056290393,38.86996206506943,100
-77.05788457660967,38.87253259892824,100
</coordinates>
</LinearRing>
</outerBoundaryIs>
<innerBoundaryIs>
<LinearRing>
<coordinates>
-77.05668055019126,38.87154239798456,100
-77.05542625960818,38.87167890344077,100
-77.05485125901024,38.87076535397792,100
-77.05577677433152,38.87008686581446,100
-77.05691162017543,38.87054446963351,100
-77.05668055019126,38.87154239798456,100
</coordinates>
</LinearRing>
</innerBoundaryIs>
</Polygon>
</Placemark> </kml>
2 Gelişmiş KML Dokümanları
Bu bölümde; geometri için paylaşılan stiller, yer işaretleri için vurgulanan simgeler ve ekran yer paylaşımları gibi bir metin düzenleyici kullanılarak yazılması gereken bazı KML öğeleri açıklanmaktadır. KML'yi "elle" yazmak, özellik oluşturmak ve değiştirmek için Google Earth arayüzünü kullanmaktan biraz daha gelişmiş bir yöntemdir. Ancak az sayıda alıştırma yaparak çoğu kullanıcı bu efektleri eklemek için KML dosyalarını rahatça düzenleyebilir.
Geometri Stilleri
Google Earth'te özellikler oluşturduktan ve Google Earth'ün oluşturduğu KML kodunu inceledikten sonra, stillerin verilerinizin görüntülenme biçiminin önemli bir parçası olduğunu fark edeceksiniz. Deneyimli kullanıcılar kendi stillerini nasıl tanımlayacaklarını öğrenmek isteyecektir.
Bir KML Dokümanı'nın başında bir Stil tanımlarken onun için bir kimlik tanımlarsanız bu stili, Dokümanın başka bir yerinde tanımlanan Geometri, Yer İşaretleri ve Yer Paylaşımlarında kullanabilirsiniz. Aynı Stil birden fazla öğe tarafından kullanılabileceği için bu şekilde tanımlanan ve kullanılan stiller paylaşılan stiller olarak adlandırılır. Belirli bir Stil'i bir kez tanımlarsınız, ardından <styleUrl> öğesini kullanarak bu stile bir kereden fazla başvuruda bulunabilirsiniz. Stil tanımı aynı dosya içindeyse, Stil Kimliğinden önce # işaretiyle başlayın. Stil tanımı harici bir dosyada bulunuyorsa URL'nin tamamını <styleUrl> öğesine ekleyin.
KML Samples dosyası, her biri dosyanın başında kimlikle tanımlanan bir dizi paylaşılan stil içerir. Kimliklerinizin, etkilerini kolayca anlayabilmeniz için açıklayıcı dizeler olduğunda en kolay yolu budur. Aşağıda, çokgen yüzleri için şeffaf mavi bir renk ve poligon kenarlarının 1,5 (ve varsayılan beyaz rengi) çizgi genişliğini tanımlayan bir stil ("transBluePoly") örneği verilmiştir. Bu stil, Google Kampüs örneğinde 41 numaralı bina tarafından kullanılır (Poligonlar klasöründe):
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Style id="transBluePoly">
<LineStyle>
<width>1.5</width>
</LineStyle>
<PolyStyle>
<color>7dff0000</color>
</PolyStyle>
</Style> <Placemark>
<name>Building 41</name>
<styleUrl>#transBluePoly</styleUrl>
<Polygon>
<extrude>1</extrude>
<altitudeMode>relativeToGround</altitudeMode>
<outerBoundaryIs>
<LinearRing>
<coordinates> -122.0857412771483,37.42227033155257,17
-122.0858169768481,37.42231408832346,17
-122.085852582875,37.42230337469744,17
-122.0858799945639,37.42225686138789,17
-122.0858860101409,37.4222311076138,17
-122.0858069157288,37.42220250173855,17
-122.0858379542653,37.42214027058678,17
-122.0856732640519,37.42208690214408,17
-122.0856022926407,37.42214885429042,17
-122.0855902778436,37.422128290487,17
-122.0855841672237,37.42208171967246,17
-122.0854852065741,37.42210455874995,17
-122.0855067264352,37.42214267949824,17
-122.0854430712915,37.42212783846172,17
-122.0850990714904,37.42251282407603,17
-122.0856769818632,37.42281815323651,17
-122.0860162273783,37.42244918858722,17
-122.0857260327004,37.42229239604253,17
-122.0857412771483,37.42227033155257,17 </coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</Placemark>
</Document>
</kml>
<styleUrl> öğesinin <bookmark> alt öğesi olduğunu (etkilenen Geometrinin değil) unutmayın.
Vurgulanan Simgeler İçin Stiller
Stiller ve İşaretleme klasöründeki "Vurgulanan Simge", KML ile üzerine gelme efektinin nasıl oluşturulacağını gösterir. Doküman iki farklı stili tanımlar. Biri "normalYer İşaretleri", diğeri ise "highlightbookmark" içindir (imleç simgenin üzerine geldiğinde gösterilir). <StyleMap> öğesinin, her bir simge stilini bir simge durumuyla eşleyen iki anahtar/değer çifti vardır. İki normal durum vardır: normal ve öne çıkan.
Burada gösterilen temel adımlar şunlardır:
- Yer işaretinin normal simgesi için bir <Stil> tanımlayın ve ona kimlik atayın (burada "normal Yer İşareti"). <Stil>, aşağıda gösterildiği gibi, kullanılacak gerçek resim için bir <href> içeren <Simge> içerir.
- Yer İşareti'nin vurgu simgesi için bir <Stil> tanımlayın ve buna bir kimlik atayın (burada "highlightbookmark).
- <StyleMap> öğesini oluşturun ve buna bir kimlik atayın ("exampleStyleMap"). Yer işareti bu kimliğe başvuruda bulunur.
- <StyleMap> öğesinde normal durumu için "#normalbookmark" ifadesini belirtin.
- <StyleMap> öğesinde highlight durumu için "#highlightbookmark" ifadesini belirtin.
- Yer İşareti bölümüne "#exampleStyleMap" anlamına gelen bir <styleUrl> öğesi ekleyin.
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Highlighted Icon</name>
<description>Place your mouse over the icon to see it display the new icon</description>
<Style id="highlightPlacemark">
<IconStyle>
<Icon>
<href>http://maps.google.com/mapfiles/kml/paddle/red-stars.png</href>
</Icon>
</IconStyle>
</Style>
<Style id="normalPlacemark">
<IconStyle>
<Icon>
<href>http://maps.google.com/mapfiles/kml/paddle/wht-blank.png</href>
</Icon>
</IconStyle>
</Style>
<StyleMap id="exampleStyleMap">
<Pair>
<key>normal</key>
<styleUrl>#normalPlacemark</styleUrl>
</Pair>
<Pair>
<key>highlight</key>
<styleUrl>#highlightPlacemark</styleUrl>
</Pair>
</StyleMap>
<Placemark>
<name>Roll over this icon</name>
<styleUrl>#exampleStyleMap</styleUrl>
<Point>
<coordinates>-122.0856545755255,37.42243077405461,0</coordinates>
</Point>
</Placemark>
</Document>
</kml>
Ekran Yer Paylaşımları
Ekran bindirmeleri doğrudan Google Earth'te yazılamaz ve bu nedenle zemin bindirmelerinden daha zor oluşturulur. Kapsamlı bir örnek koleksiyonu, KML Örnekleri dosyasındaki Ekran Yer Paylaşımları klasörüne eklenir.
Örnek olarak, KML Samples dosyasında "Mutlak Konumlandırma: Sol üst" klasörünü etkinleştirin. Görünüm penceresinin sol üst tarafında bir ekran yer paylaşımı görürsünüz. Bu, aşağıdaki KML koduyla oluşturuldu:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<ScreenOverlay>
<name>Absolute Positioning: Top left</name>
<Icon>
<href>http://developers.google.com/kml/documentation/images/top_left.jpg</href>
</Icon>
<overlayXY x="0" y="1" xunits="fraction" yunits="fraction"/>
<screenXY x="0" y="1" xunits="fraction" yunits="fraction"/>
<rotationXY x="0" y="0" xunits="fraction" yunits="fraction"/>
<size x="0" y="0" xunits="fraction" yunits="fraction"/>
</ScreenOverlay>
</kml>
Konumlandırma, <overlayXY> tarafından belirtilen görüntüdeki bir noktanın <screenXY> ile ekrandaki bir noktayla eşlenmesiyle kontrol edilir. Bu durumda, resmin sol üst köşesi (0,1) ekrandaki aynı noktayla örtüşerek yapılmıştır.
Diğer sabit konumları elde etmenin nasıl mümkün olduğunu görmek ve ekran boyutuyla dinamik olarak boyutlandırılmış resimler oluşturmak için klasördeki diğer örneklere göz atın. (xunits ve yunits öğelerinin de hassasiyet kontrolü için "pikseller" olarak belirtilebileceğini unutmayın.) Daha ayrıntılı bilgi için KML 2.2 Referansı'na bakın.
Ağ Bağlantıları
Ağ bağlantısı, dosya yükleyen <href> (köprü metin referansı) içeren bir <Link> öğesi içerir. <href>, yerel dosya spesifikasyonu veya mutlak URL olabilir. Bir <NetworkLink>, ada rağmen ağdaki dosyaları yüklemeyebilir.
Bir bağlantıdaki <href>, aşağıdakilerden herhangi birinin konumunu belirtir:
- Simge stilleri, zemin bindirmeleri ve ekran bindirmelerindeki simgeler tarafından kullanılan resim dosyası
- <Model> öğesinde kullanılan bir model dosyası
- Ağ Bağlantısı tarafından yüklenen bir KML veya KMZ dosyası
Belirtilen dosya, yerel bir dosya veya uzak bir sunucudaki bir dosya olabilir. En basit şekilde, ağ bağlantıları tek bir büyük KML dosyasını aynı bilgisayarda daha küçük, daha yönetilebilir dosyalara bölmek için kullanışlı bir yöntemdir.
Şu ana kadarki tüm örneklerimizde KML kodunun yerel makineden Google Earth'e teslim edilmesi gerekiyordu. Ağ bağlantıları size uzak bir konumdan içerik sunma gücünü verir ve genellikle çok sayıda kullanıcıya veri dağıtmak için kullanılır. Bu şekilde, verilerin değiştirilmesi gerekiyorsa yalnızca kaynak konumda değiştirilmesi gerekir. Tüm kullanıcılar güncellenen verileri otomatik olarak alır.
KML için CGI Komut Dosyası
Bir ağ bağlantısının <href> etiketi, statik veri içeren dosyaların yanı sıra dinamik olarak oluşturulan verileri de (örneğin, bir ağ sunucusunda bulunan CGI komut dosyası tarafından) işaret edebilir. PHP, Python veya Perl gibi bir kodlama dili bilgisi ile her ağ bağlantısına KML akışı (veya dosyası) getiren bir komut dosyası oluşturabilirsiniz.
KML'nin bir ağ (CGI) üzerinden sunulması için iki şey gereklidir:
İstemciden (Google Earth) sunucuya çağrı yapıldığında
(1) HTTP 200 yanıt kodu döndürmeli ve (2) yanıtın içerik türünü text/plain
ya da application/vnd.google-earth.kml+xml.
olarak ayarlamalıdır.
Yanıt KML geçerli olmalıdır. Karmaşık uygulamalarda doğru şekilde işlem yapılması çok önemlidir.
İpucu: Hataları düzeltmenin kolay bir yolu, sunucu hatasını bir klasör adının metni olarak ayrıştırmaktır. Örneğin, sunucunun dize olarak <Folder><name>database inaccessible</name></Folder>
değerini döndürmesini sağlayabilirsiniz. Bu bilgiler, bağlantının bırakılmasına göre daha fazla bilgi verir (ve daha kullanıcı dostudur).
Aşağıdaki örnekler Python kullansa da diğer tüm yazma dillerinde aynı şekilde geçerlidir.
Rastgele Yer İşareti Oluşturma
Aşağıdaki Python komut dosyası, enlem ve boylam için rastgele tam sayı değerleri oluşturur ve ardından bu değerleri bir <Point> öğesinin <ords> öğesine ekler. Ağ bağlantısı her yenilendiğinde, Python komut dosyası tekrar çalışır ve yeni enlem ve boylam değerleriyle KML oluşturur.
#!/usr/bin/python import random latitude = random.randrange(-90, 90) longitude = random.randrange(-180, 180) kml = ( '<?xml version="1.0" encoding="UTF-8"?>\n' '<kml xmlns="http://www.opengis.net/kml/2.2">\n' '<Placemark>\n' '<name>Random Placemark</name>\n' '<Point>\n' '<coordinates>%d,%d</coordinates>\n' '</Point>\n' '</Placemark>\n' '</kml>' ) %(longitude, latitude) print 'Content-Type: application/vnd.google-earth.kml+xml\n' print kml
Bu Python komut dosyasını yükleyen Ağ Bağlantısı içeren bir KML dosyası örneğini burada bulabilirsiniz:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Folder>
<name>Network Links</name>
<visibility>0</visibility>
<open>0</open>
<description>Network link example 1</description>
<NetworkLink>
<name>Random Placemark</name>
<visibility>0</visibility>
<open>0</open>
<description>A simple server-side script that generates a new random
placemark on each call</description>
<refreshVisibility>0</refreshVisibility>
<flyToView>0</flyToView>
<Link>
<href>http://yourserver.com/cgi-bin/randomPlacemark.py</href>
</Link>
</NetworkLink>
</Folder>
</kml>
Görüntülemeye Dayalı Yenileme Sorguları
Standart ağ bağlantısı tek yönlü bir bağlantıdır: Veriler yalnızca sunucudan Google Earth'e geçer. Görüntüleme tabanlı yenileme, iki yönlü iletişim sağlar. Görünüm tabanlı yenileme etkin olduğunda, Google Earth görüntüleme koordinatlarını belirtilen bir zamanda sunucuya geri döndürür. Bu, her n saniyede bir, dakikada veya saatte ya da görünümün taşınması durduktan sonra belirli bir süre geçtikten sonra olabilir. KML 2.2 Referansı'nda <viewRefreshMode> bölümüne bakın.
Koordinatlar, koordinatları aşağıdaki gibi ekleyen bir HTTP GET aracılığıyla sunucuya döndürülür (bu, varsayılan sınır kutusu bilgileridir):
GET /path/to/server/script/query?BBOX=[longitude_west, latitude_south, longitude_east, latitude_north] HTTP/1.1
İstek San Francisco'da aşağıda bakarken yapılmışsa, koordinatlar aşağıdaki gibi görünebilir:
GET /path/to/server/script/query?BBOX=-122.497790,37.730385,-122.380087,37.812331 HTTP/1.1
Bu özellik bazı çok yaratıcı uygulamalar için kullanılabilir ancak başlamanıza yardımcı olacak basit bir örnek aşağıda verilmiştir.
Bir Görünümü Doğrudan Görüntüleme Altında
Aşağıdaki sunucu tarafı Python komut dosyası, Google Earth tarafından gönderilen dönüş mesajını ayrıştırır ve ekranın ortasındaki bir Yer İşareti ile yanıt verir. Ağ Bağlantısı her yenilendiğinde yeni bir Yer İşareti oluşturulur.
#!/usr/bin/python import cgi url = cgi.FieldStorage() bbox = url['BBOX'].value bbox = bbox.split(',') west = float(bbox[0]) south = float(bbox[1]) east = float(bbox[2]) north = float(bbox[3]) center_lng = ((east - west) / 2) + west center_lat = ((north - south) / 2) + south kml = ( '<?xml version="1.0" encoding="UTF-8"?>\n' '<kml xmlns="http://www.opengis.net/kml/2.2">\n' '<Placemark>\n' '<name>View-centered placemark</name>\n' '<Point>\n' '<coordinates>%.6f,%.6f</coordinates>\n' '</Point>\n' '</Placemark>\n' '</kml>' ) %(center_lng, center_lat) print 'Content-Type: application/vnd.google-earth.kml+xml\n' print kml
Python komut dosyasını yükleyen Ağ Bağlantısı için KML'yi burada görebilirsiniz:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Folder>
<name>Network Links</name>
<visibility>0</visibility>
<open>0</open>
<description>Network link example 2</description>
<NetworkLink>
<name>View Centered Placemark</name>
<visibility>0</visibility>
<open>0</open>
<description>The view-based refresh allows the remote server to calculate
the center of your screen and return a placemark.</description>
<refreshVisibility>0</refreshVisibility>
<flyToView>0</flyToView>
<Link>
<href>http://yourserver.com/cgi-bin/viewCenteredPlacemark.py</href>
<refreshInterval>2</refreshInterval>
<viewRefreshMode>onStop</viewRefreshMode>
<viewRefreshTime>1</viewRefreshTime>
</Link>
</NetworkLink>
</Folder>
</kml>
Bu örnekte gösterilen ilke, çok karmaşık bazı uygulamalar için kullanılabilir. Örneğin, coğrafi bilgiler içeren bir veritabanınız varsa görüntüleyicinin koordinatlarını çıkarabilir, görünüme özel veriler için veritabanına çağrı yapabilir ve bunu Google Earth'e KML olarak döndürebilirsiniz.
3 KML MIME Türü
Bir KML sunucusu, Google Earth'ten (veya herhangi bir Earth tarayıcısından) gelen bir isteğe yanıt verirken Google Earth'ün yanıtlarını doğru şekilde yorumlayabilmesi için belirli bir dizi kuralı izlemelidir.
Başarılı olduğunda, sunucu HTTP 200 yanıt kodunu döndürmeli ve yanıtın içerik türünü burada açıklandığı gibi uygun bir MIME türüne ayarlamalıdır.
Google Earth, KML ve KMZ dosyalarını okur. KML dosyalarının MIME türü:
application/vnd.google-earth.kml+xml
KMZ dosyalarının MIME türü:
application/vnd.google-earth.kmz
Apache için şu satırları httpd.conf dosyasına ekleyin:
AddType application/vnd.google-earth.kml+xml .kml
AddType application/vnd.google-earth.kmz .kmz
Microsoft'un IIS'sinde MIME türlerini ayarlama hakkında ayrıntılı bilgi için Microsoft dokümanlarına göz atın.
Yanıtın gövdesinde, XML bildirimi de (<?xml version="1.0" encoding="UTF-8"?>
) dahil olmak üzere geçerli KML verileri bulunmalıdır. Sunucu geçersiz KML döndürürse Ağ Bağlantısı durur, devre dışı bırakılır ve bir hata mesajı verir.
Sırada ne var?
Daha fazlası için hazır mısınız? Temel KML özelliklerini açıklayan Geliştirici Kılavuzu'na göz atın. Belirli öğeler hakkında bilgi edinmek için KML Referansı'na da göz atın.