你能在虚拟元素中创建一个谷歌地图吗?
Can you create a Google map in a virtual element
我想知道是否有可能在虚拟元素中创建一个工作的谷歌地图,然后可以随时粘贴到任何页面。
所以这是我的JS当一个元素已经存在的页面。
var mapLatLong = new google.maps.LatLng(51.5174456, -0.1305081);
var markerLatlng = new google.maps.LatLng(51.5170951, -0.1367416);
var mapOptions = {
zoom: 16,
center: mapLatLong,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map($('#map_canvas'), mapOptions);
var contentString = '<div id="content">'+
'<div id="siteNotice">'+
'</div>'+
'<h1 id="firstHeading" class="firstHeading">BrocklebankPenn</h1>'+
'<div id="bodyContent">'+
'<p>5th floor, 58-60 Berners Street,<br />London,<br />W1T 3NQ,<br />United Kingdom</p>'+
'<p>+44 (0)20 3137 7034</p>'+
'</div>'+
'</div>';
var infowindow = new google.maps.InfoWindow({
content: contentString
});
var marker = new google.maps.Marker({
position: markerLatlng,
map: map,
title: 'BrocklebankPenn'
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
infowindow.open(map,marker);
我想做的是这样的:
this.mapCanvas = document.createElement('div');
this.mapCanvas.setAttribute('id', 'map_canvas');
var mapLatLong = new google.maps.LatLng(51.5174456, -0.1305081);
var markerLatlng = new google.maps.LatLng(51.5170951, -0.1367416);
var mapOptions = {
zoom: 16,
center: mapLatLong,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map($(this.mapCanvas), mapOptions);
var contentString = '<div id="content">'+
'<div id="siteNotice">'+
'</div>'+
'<h1 id="firstHeading" class="firstHeading">BrocklebankPenn</h1>'+
'<div id="bodyContent">'+
'<p>5th floor, 58-60 Berners Street,<br />London,<br />W1T 3NQ,<br />United Kingdom</p>'+
'<p>+44 (0)20 3137 7034</p>'+
'</div>'+
'</div>';
var infowindow = new google.maps.InfoWindow({
content: contentString
});
var marker = new google.maps.Marker({
position: markerLatlng,
map: map,
title: 'BrocklebankPenn'
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
infowindow.open(map,marker);
this.$el.html(this.mapCanvas);
基本上是完全相同的事情,但与variable
而不是#map_canvas
,我已经采取了这种方法与JS在过去,但它似乎并不适用于谷歌地图,我得到以下错误:
Uncaught TypeError: Cannot set property 'position' of undefined
我不确定。
如果有人能帮忙,那就太好了。
欢呼,卢克。
基本上是可能的,Demo: http://jsfiddle.net/doktormolle/5SjnK/
你的代码的问题:
var map = new google.maps.Map($(this.mapCanvas), mapOptions);
$(this.mapCanvas)
是一个jquery对象,但它预计是一个html元素
this.$el.html(this.mapCanvas);
不要设置html,必须将原始节点插入到文档中。
但是我不建议它,会有更多的问题,例如,当你使用api方法试图访问map-div的parentNode或需要计算文档内位置的方法(两者都会在节点插入到文档之前失败)。
与相关粘贴到任何页面:
这是不可能的,你使用映射的文档必须是你加载API的文档,API内部使用对加载API的窗口/文档的引用。在Chrome和Firefox下,标记拖动在iframe中不起作用
但只要任何页面不意味着"任何文档"(关于你的描述,它总是相同的文档),这是可能的
相关文章:
- 调用一个“;默认瓦片”;在谷歌地图中
- 如何创建一个谷歌地图地理坐标数组
- 为位于路线上的谷歌地图标记(起点和终点)设置一个信息窗口
- 如何在谷歌地图中突出显示一个州点击一个国家的任何区域
- 使用谷歌地图:一个返回undefined的自定义javascript函数
- 谷歌地图API-获取信息窗口打开时,点击一个圆圈
- 从模态内部的主体复制一个谷歌地图
- 使用两个不同表中的值在一个谷歌地图上显示标记
- 如何制作一个谷歌地图标记,随着地图缩放而缩小/缩小大小
- 如何添加一个谷歌地图标记
- 我们可以知道一个谷歌地图是否已经初始化
- 如何隐藏一个谷歌地图圆圈对象后,不同的时间间隔
- 创建一个谷歌地图
- 显示一个谷歌地图上的引导模式
- 多个多边形与多种颜色在一个谷歌地图
- 包括3个图像在一个谷歌地图标记
- 值从返回,到一个谷歌地图功能
- 你能在虚拟元素中创建一个谷歌地图吗?
- 集成一个谷歌地图javascript API到博客
- 创建一个谷歌地图界面