2016-07-24 69 views
-1

我在使用以下腳本段正確縮放和居中的網頁上有一個現有地圖: var mapOptions = { center:{lat:43.57023,lng:-79.48676} , zoom:12 } map = new google.maps.Map(document.getElementById(「map-canvas」),mapOptions);Google地圖KML圖層初始縮放和中心

然後,我使用以下命令添加kml圖層: var myLayer = new google.maps.KmlLayer({url:「」}); myLayer.setMap(map);

這一直在去年工作。但是,我不得不更新kml文件以包含更廣的區域。新的kml文件有效,但新的縮放和中心位置不受尊重。

map = new google.maps.Map(document.getElementById("map-canvas"), { 
    center: { lat: 48.0, lng: -89.0 }, 
    zoom: 4 

});

取而代之的是地圖縮小了,所以我看到3個完整的地球加上每邊一點,中心位於北極之上。您可以在http://www.a711lions.ca/recycleforsight/locationmap.htmlhttp://www.a711lions.ca/recycleforsight/locationmap2.html處看到兩個不同的結果。

我讀過,我可以使用layer.preserveViewport設置來克服這一點,但我試圖理解爲什麼它甚至發生。 AFAICT的要點都在加拿大(它們當然不會出現在三重地球視圖中,因爲它在其他地方),那麼爲什麼KML圖層如此之大呢?

任何想法?

回答

1

您的KML文件包含一個錯誤的觀點:

<Placemark> 
    <name>Dr. Sibbald</name> 
    <description><![CDATA[<br><b>Address:</b> Applewood Shopping Ctre, Suite 210, 1077 N. Service Rd<br><b>City:</b> Mississauga<br><b>Postal Code:</b> L5R 2X5<br><b>Telephone:</b> (905)273-9009<br><b>Sponsoring Club:</b> Mississauga Credit Valley Lions Club]]></description> 
    <styleUrl>#icon-503-DB4436</styleUrl> 
    <Point> 
     <coordinates>-3.0,90.0,0.0</coordinates> 
    </Point> 
    <!-- ... --> 
</Placemark> 

它位於北極。

+0

是的,謝謝。我在使用正則表達式對座標進行完整性檢查後發現它。但是,它不應該導致這種奇怪的行爲。這似乎禁止標記聖誕老人的工作坊。 :) 如果我把它放在一個無意義的位置,比如91度北,那麼我希望它被忽略或者被標記爲「離開地球」。如果它位於合法位置,則應該映射它。 –

+0

如果你在北極有一個點,地圖會顯示它(縮小以包含它),90度對於谷歌地圖上使用的墨卡託投影是有問題的。 – geocodezip

+0

這個問題似乎被證明是錯誤的。位置在北極(北經90度),經度不相關 - -3度與任何其他經度一樣有效。 實際縮放比整個地球大得多,北極沒有標記。在這種情況下,投影應該使用-3來在總理子午線的西面顯示標記。 對不起,但我不能真正把它看作是Google代碼中的一個錯誤。 –