我在页面上有一个现有的地图。我可以使用document.getElementById()的行来选择该元素以获取HTMLElement JavaScript对象。是否有可能获得地图初始化时创建的google.maps.Map实例,即它是HTMLElement对象的属性还是其原型?从HTMLElement获取google.maps.Map实例
回答
你不能得到DOM Element
google.maps.Map
对象,在其谷歌地图对象已建成。 google.maps.Map
只是一个包装,它控制着DOM Element
查看地图,并且该元素没有引用其包装。
如果您的问题只是范围,请将map
作为window
对象的属性,并且可以从您网页的任何地方访问它。您可以使用其中的一个做'map'
全球:
window.map = new google.maps.Map(..)
或
map = new google.maps.Map(...) //AVOID 'var'
您在初始化地图时创建实例;
var map = new google.maps.Map(document.getElementById("map_element"), options);
每当你想要做的事就像把一个标记,改变位置等,这不是一个HTML元素的对象可以使用该实例。不过,它有一个getDiv()
方法,它为您提供了运行的html元素。
map.getDiv(); // in this case it returns the element with the id 'map_element'
但是我如何从范围之外到那个实例?至于我的有关地图已经从一行JavaScript,我不能改变,看起来像初始化的问题: 新google.maps.Map(EL,选项); 请注意实例没有保存到变量中,是否有可能到达该实例? – 2012-04-20 20:59:32
我不太确定这是否可以完成。 – keune 2012-04-20 21:13:48
这是伟大的e.h.在事件监听器中:'marker.map.getDiv()'。 – 2017-02-13 10:15:26
我也有类似的问题。我想要做的就是在创建地图后操作地图。我尝试过这样的事情(我认为它也会帮助你)。我创建功能(或多或少是这样):
function load_map(el_id, lat, lng) {
var point = new google.maps.LatLng(lat,lng);
var myMapOptions = {
scrollwheel:false,
zoom: 15,
center: point,
mapTypeControl: true,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.DROPDOWN_MENU,
position: google.maps.ControlPosition.RIGHT_TOP
},
navigationControl: true,
navigationControlOptions: {
style: google.maps.NavigationControlStyle.SMALL,
position: google.maps.ControlPosition.LEFT_CENTER
},
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById(el_id),myMapOptions);
var marker = new google.maps.Marker({
draggable:true,
map: map,
position: point
});
return({
container:map.getDiv(),
marker:marker,
mapa:map
});
}
什么这个函数的作用是调用它来创建一些容器中的地图之后。
var mapa = load_map('mapa_container', 53.779845, 20.485712);
函数将返回包含同时使地图中使用的一些数据对象。创建地图本身我可以简单地操纵,在我的情况之后,将每个地图上标记分别使用mapa
对象,例如:
mapa.marker.setPosition(new google.maps.LatLng(20,30));
mapa.mapa.setCenter(new google.maps.LatLng(20,30));
这将改变标记的位置和中心映射到相同COORDS。请注意,lng
和lat
值与创建地图的调用函数不同。
希望有所帮助。
这是一个很好的,更模块化的答案,而不是暴露窗口中的地图变量。 – apebeast 2016-07-07 04:43:12
您可以从DOM Element
获得google.maps.Map
对象,稍作诀窍。
初始化映射对象时,需要将对象存储在元素的数据属性上。
实施例:
$.fn.googleMap = function (options) {
var _this = this;
var settings = $.extend({}, {
zoom: 5,
centerLat: 0,
centerLon: 0
}, options);
this.initialize = function() {
var mapOptions = {
zoom: settings.zoom
};
var map = new google.maps.Map(_this.get(0), mapOptions);
// do anything with your map object here,
// eg: centering map, adding markers' events
/********************************************
* This is the trick!
* set map object to element's data attribute
********************************************/
_this.data('map', map);
return _this;
};
// ... more methods
return this;
};
在定义一个地图元件,例如:
var mapCanvas = $('#map-canvas');
$('.location').on('click', function() {
// google map takes time to load, so it's better to get
// the data after map is rendered completely
var map = mapCanvas.data("map");
if (map) {
map.panTo(new google.maps.LatLng(
$(this).data('latitude'),
$(this).data('longitude')
));
}
});
:
var mapCanvas = $('#map-canvas');
var map = mapCanvas.googleMap({
zoom: 5,
centerLat: 0,
centerLong: 0
});
// ... add some pre-load initiation here, eg: add some markers
// then initialize map
map.initialize();
然后可以通过使用元素的ID,例如,获得地图对象后面上
通过使用此方法,您可以在页面上使用具有不同行为的多个贴图。
如果您正在使用谷歌地图组件从聚合物项目,就可以得到现有地图大教堂这样的:
:var map = document.querySelector('google-map');
一旦你的是,地图的当前实例可以通过访问
var currentMapInstance = map.map;
通过使用var map = $("#map_canvas").gmap('get','map')
可以得到地图划分为可变的,由使用该变量可以改变现有的地图。
干杯
'gmap('get','map')'从哪里来? – 2016-02-19 19:53:55
- 1. 如何从节点或HTMLElement获取html?
- 2. 从IE中的HtmlElement的Dom获取IHTMLStyle3
- 3. 从DLL/Assembly获取实例?
- 4. 从selectbox中获取实例
- 5. 从DLL/Assembly获取实例?
- 6. 从Azure实例获取ServiceDefinition.csdef
- 7. 从实例获取字段?
- 8. 获取此HTMLelement在反应
- 9. 获取单例实例
- 10. Codeigniter:获取实例
- 11. 从视图中获取片段实例
- 12. 从类型列表中获取实例
- 13. 从jquery回调中获取类实例
- 14. 从组件获取ES6类实例
- 15. Swift:从类的实例获取类型
- 16. 如何从FragmentActivity获取片段实例?
- 17. 从Azure获取果园实例更新
- 18. 从节点获取控制器实例
- 19. 如何从XmlNode实例获取xpath
- 20. Xamarin,iOS从tabbarcontroller获取viewcontroller的实例
- 21. 从HtmlHelper获取对象实例
- 22. 从超类到实例获取方法
- 23. 从weblogic集群获取实例ip
- 24. 从实例获取类的名称
- 25. 从servlet获取DataSourceRealm的实例
- 26. 从FieldInfo获取对象实例
- 27. 如何从AppCompatDialogFragment获取ActionBar实例?
- 28. 如何从AppDomain获取当前实例?
- 29. Ninject从内核获取实例
- 30. 如何从插件获取类实例?
为什么要避免'var'? (在最后一行) – ZenOut 2013-07-06 06:13:05
因为“变种”将创建一个新的本地变量(例如,如果在函数内部中使用的,变量将在函数返回时丢弃),而不是覆盖一个全球性(如果存在的话)。例如。如果你有一个名为'map'的全局变量,并且你在任何函数中使用'map ='anything'',那么全局变量从现在起将具有'任何'值。 – 2013-08-17 18:44:41