我正在使用Google Maps JS API创建自己的样式化地图。我想添加路线功能来映射,我按照official tutorial(在显示DirectionsResult 标题下),但最终路线没有显示...
我调试了我的代码,我发现, directionsService.route 函数返回 google.maps.DirectionsStatus.OK 和 directionsDisplay.setDirections(结果)实际上是在没有JS错误的情况下调用的...所以方向已成功计算但未在我的地图中显示。试图关闭特殊地图样式,但即使在默认地图样式上它也没有出现。有什么想法可以解决问题吗?
好的,有些代码......:
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=AIzaSyAB2gbXmG... ...mNs66iPr8&sensor=false&callback=directions_init"></script>
<script type="text/javascript">
var map;
var zoom = 11;
var directionsDisplay;
var directionsService;
function gmap_init(){
var styleArray = [ /*here is style but even if its commented its not working*/];
var alterMapStyle = new google.maps.StyledMapType(styleArray, {name: "ALTER style"});
var latlng = new google.maps.LatLng(/*lat, lng*/);
var myOptions = {
zoom: zoom,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: false,
panControl: false,
zoomControl: false,
scaleControl: false,
streetViewControl: false
};
map = new google.maps.Map(document.getElementById("gmap"), myOptions);
map.mapTypes.set('ALTER_style', alterMapStyle);
map.setMapTypeId('ALTER_style');
}
function directions_init(){
directionsService = new google.maps.DirectionsService();
directionsDisplay = new google.maps.DirectionsRenderer();
directionsDisplay.setMap(map);
display_route();
}
function display_route(){
var request = {
origin: 'Place A',
destination:'Place B',
travelMode: google.maps.TravelMode.DRIVING
};
directionsService.route(request, function(result, status) {
if (status == google.maps.DirectionsStatus.OK) {
//program got here without error
directionsDisplay.setDirections(result);
}
});
}
答案 0 :(得分:1)
不确定这是否是您问题的根源,但确实值得一试...... 从您的脚本输入
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=AIzaSyAB2gbXmG... ...mNs66iPr8&sensor=false&callback=directions_init"></script>
我假设在下载api脚本之后调用directions_init函数,这可能是在页面的onload事件之前,因此你的map对象尚未启动并且为null。所以几乎你在打电话
directionsDisplay.setMap(null);
尝试从gmap_init或onload后触发的任何事件调用directions_init。