Транспортный слой на встроенной карте Google SearchControl
-
11-09-2019 - |
Вопрос
Как активировать слой «Транспорт» на карте Google на веб-странице?Карта создается с помощью элемента управления поиском.
<!-- ++Begin Map Search Control Wizard Generated Code++ -->
<!--
// Created with a Google AJAX Search Wizard
// http://code.google.com/apis/ajaxsearch/wizards.html
-->
<!--
// The Following div element will end up holding the map search control.
// You can place this anywhere on your page
-->
<div id="mapsearch">
<span style="color:#676767;font-size:11px;margin:1px;padding:0px;">Loading map ...</span>
</div>
<!-- Maps Api, Ajax Search Api and Stylesheet
// Note: If you are already using the Maps API then do not include it again
// If you are already using the AJAX Search API, then do not include it
// or its stylesheet again
//
// The Key Embedded in the following script tags is designed to work with
// the following site:
-->
<script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAxMICTqJZCQhVvaG5Z6vcbBQsQZTeCW4bnSEJHaQGIFLLp_Ev4hQzmbQjyOZxyLLe8CmaFaW5G3RI8g"
type="text/javascript"></script>
<script src="http://www.google.com/uds/api?file=uds.js&v=1.0&source=uds-msw&key=ABQIAAAAxMICTqJZCQhVvaG5Z6vcbBQsQZTeCW4bnSEJHaQGIFLLp_Ev4hQzmbQjyOZxyLLe8CmaFaW5G3RI8g"
type="text/javascript"></script>
<style type="text/css">
@import url("http://www.google.com/uds/css/gsearch.css");
</style>
<!-- Map Search Control and Stylesheet -->
<script type="text/javascript">
window._uds_msw_donotrepair = true;
</script>
<script src="http://www.google.com/uds/solutions/mapsearch/gsmapsearch.js?mode=new"
type="text/javascript"></script>
<style type="text/css">
@import url("http://www.google.com/uds/solutions/mapsearch/gsmapsearch.css");
</style>
<style type="text/css">
.gsmsc-mapDiv {
height : 400px;
}
.gsmsc-idleMapDiv {
height : 400px;
}
#mapsearch {
width : 700px;
margin: 1px;
padding: 0px;
}
</style>
<script type="text/javascript">
function LoadMapSearchControl() {
var options = {
zoomControl : GSmapSearchControl.ZOOM_CONTROL_ENABLE_ALL,
title : "<?php echo $city. ','. $country; ?>",
url : "",
idleMapZoom : GSmapSearchControl.ACTIVE_MAP_ZOOM+1,
activeMapZoom : GSmapSearchControl.ACTIVE_MAP_ZOOM+1
}
new GSmapSearchControl(
document.getElementById("mapsearch"),
"<?php echo $city. ','. $country; ?>",
options
);
}
// arrange for this function to be called during body.onload
// event processing
GSearch.setOnLoadCallback(LoadMapSearchControl);
</script>
<!-- ++End Map Search Control Wizard Generated Code++ -->
Решение
Уровень транзита в настоящее время недоступен через API.Есть Запрос об улучшении открыт для этого вопроса.
Другие советы
API Карт Google позволит вам добавить наложение плитки на вашу карту, таким образом:
var tileLayerOverlay = new GTileLayerOverlay(
new GTileLayer(null, null, null, {
tileUrlTemplate: 'http://example.com/transit_tiles/{Z}_{X}_{Y}.png',
isPng:true,
opacity:1,
})
);
map.addOverlay(tileLayerOverlay);
Но для этого вам нужно будет отрисовать собственный набор тайлов общественного транспорта.
Кстати, тайлы, которые Google использует для собственного транзитного слоя, извлекаются по аналогичной схеме:
http://mlt2.google.com/mapslt?lyrs=transit&x=1310&y=3166&z=13&w=256&h=256&gl=us&hl=en
Итак, вы можете сделать это:
var gTransitTileUrlTemplate = 'http://mlt1.google.com/mapslt?lyrs=transit&x={X}&y={Y}&z={Z}&w=256&h=256&gl=us&hl=en';
Однако это может нарушить Условия использования Maps API, и нет никакой гарантии, что Google не изменит этот URL-адрес и не нарушит работу вашего приложения.