Я создаю плагин для карт для Wordpress, который использует Google Maps JS API V3. Обычно карты будут встроены в пост WordPress, в котором есть стилизованные изображения. На самом деле это происходит в одной из самых популярных тем TwentyEleven.
.entry-content img,
.comment-content img,
.widget img {
max-width: 97.5%; /* Fluid images for posts, comments, and widgets */
}
Что это означает для карт Google, так это то, что плитки карт в конечном итоге выглядят так:
Это было опубликовано около, не тонна, но людям пришлось иметь дело с этим. Итак, я исследовал это.
http://wordpress.org/support/topic/twenty-eleven-12-breaks-embedded-google-maps
http://wpscale.com/google-street-map-cant-work-in-wordpress-3-2/
Каждый пост, который я видел на эту тему, предлагает решение изменения стиля класса для используемого div:
.wl_places_place_map_canvas img {
max-width: none;
}
Это выглядит лучше, это действительно так. Я не нахожу решение, которое делает его великолепным. У этого решения есть два нежелательных эффекта.
- Иногда при фоновой загрузке плитки переопределение стиля фактически не работает.
- По-прежнему виден 1-пиксельный разрыв плитки, который фактически пропускает маркеры, если они оказываются на линиях плитки.
Чтобы решить проблему с фоновым стилем, я попытался использовать jQuery и убедиться, что все плитки загружены до установки стиля:
google.maps.event.trigger(_instance._map, 'resize');
var listener = google.maps.event.addListener(_instance._map, "tilesloaded", function() {
jQuery('.wl_places_place_map_canvas').find('img').css('max-width','none');
google.maps.event.removeListener(listener);
});
Это касается первой проблемы, но на карте все еще не видны пробелы во втором и 1px тайлах и наложения.
То, что я хочу, это 100% пуленепробиваемый способ навязать стиль на карте. Я тщательно исследовал API. Мне бы действительно понравился способ установки стиля на самой карте, возможно, в виде URL, который игнорировал бы и переопределял все внешние стили. В лучшем мире этот стиль будет жить в CDN Google и будет проверен на чистоту и свежесть независимо от того, где он был встроен.
Есть идеи?