【发布时间】:2015-09-03 14:41:21
【问题描述】:
我在使用 google maps api 时遇到了这个奇怪的问题。
我正在尝试显示带有可点击引脚的地图,其中数据是从 api 加载的。一切似乎都正常:数据已加载,图钉出现,切换工作......但是地图只是灰色 - 没有加载地图图像。它的可拖动标记也是从谷歌加载的,但不是地图图像。
这可能是什么原因?
'use strict'
var $ = require('jquery'),
gmaps = require('google-maps');
var mapsHero = function(el) {
this.init(el);
};
// Publics
mapsHero.prototype.init = function(map) {
var gmap;
gmaps.load(function(google) {
var InfoBox = require('google-maps-infobox');
var mapCanvas = document.getElementById('maps-hero');
var api = "URL TO API"
var icon1 = '../../assets/icons/icon_map_pin_green.svg';
var icon2 = '../../assets/icons/icon_map_pin_orange.svg';
var icon3 = '../../assets/icons/icon_map_pin_red.svg';
var marker, i, j, k, f, infobox, infoboxes = [], longitude, latitude;
var mapStyles = [{"featureType":"landscape","stylers":[{"saturation":-100},{"lightness":65},{"visibility":"on"}]},{"featureType":"poi","stylers":[{"saturation":-100},{"lightness":51},{"visibility":"simplified"}]},{"featureType":"road.highway","stylers":[{"saturation":-100},{"visibility":"simplified"}]},{"featureType":"road.arterial","stylers":[{"saturation":-100},{"lightness":30},{"visibility":"on"}]},{"featureType":"road.local","stylers":[{"saturation":-100},{"lightness":40},{"visibility":"on"}]},{"featureType":"transit","stylers":[{"saturation":-100},{"visibility":"simplified"}]},{"featureType":"administrative.province","stylers":[{"visibility":"on"}]},{"featureType":"water","elementType":"labels","stylers":[{"visibility":"on"},{"lightness":-25},{"saturation":-100}]},{"featureType":"water","elementType":"geometry","stylers":[{"hue":"#ffff00"},{"lightness":-25},{"saturation":-97}]}];
var mapOptions = {
//zoom: parseInt(map.getAttribute('data-zoom')),
zoom: 3,
mapTypeControlOptions: {
mapTypeIds: [ 'Styled']
},
mapTypeId: 'Styled',
center: new google.maps.LatLng(54.73054, -46.51219),
scrollwheel: false,
zoomControl: false,
panControl: false,
streetViewControl: false,
mapTypeControl: false,
scaleControl: false,
overviewMapControl: false
};
var styledMapType = new google.maps.StyledMapType(mapStyles, { name: 'Styled' });
var gmap = new google.maps.Map(mapCanvas, mapOptions);
var getJson = $.getJSON(api, function(data) {
var dir = data.localContacts;
$.each(data.localContacts, function(i, localContact) {
$.each(localContact.items, function(i, location) {
var icon = icon2;
var box = "maps-infobox-mfct";
if (location.isHeadquater) {
icon = icon1;
box = "maps-infobox";
}
var marker = new google.maps.Marker({
position: new google.maps.LatLng(location.longitude, location.latitude),
map: gmap,
icon: icon
});
var boxContent = '<div class="' + box + '">' + '<h3 class="headline5">' + location.name + '</h3>' + '<p>' + location.city + '<br>' + location.street + '<br>' + location.phone + '</p>' + '</div>';
var infobox = new InfoBox({
content: boxContent,
pixelOffset: new google.maps.Size(-125, -25),
closeBoxMargin: "5px",
alignBottom: true
});
infoboxes.push(infobox);
google.maps.event.addListener(marker, 'click', function() {
$.each(infoboxes, function(i, e) {
e.close();
});
infobox.open(gmap, marker);
});
});
});
});
});
};
module.exports = mapsHero;
我怀疑地图设置无法达到 marker = new google.maps.Marker,即使它们是全球性的......
有什么想法吗?
【问题讨论】:
-
您能否创建一个显示问题的代码的最小版本(例如在 JSFiddle 中)?您是否为地图容器设置了高度?我可以看到您应用了自定义样式,并且很多属性都有
saturation: -100。你确定你没有灰掉太多东西吗?
标签: javascript jquery google-maps google-maps-api-3