我正在制作一个单页应用程序,在第二个视图中,我需要显示谷歌地图。我使用的是Google maps API,其中将创建地图对象。
var map = new google.maps.Map(mapId, {
zoom: 5,
center: new google.maps.LatLng(55, 11),
mapTypeId: google.maps.MapTypeId.ROADMAP
});参数mapId给了我一个问题。该视图包含一个id为"mapId“的div,但我无法获取该id,因此无法显示地图。我尝试了HTML绑定、属性绑定,但都不起作用。我对淘汰赛是个新手。请推荐一些方法
发布于 2013-05-01 01:48:25
您应该像这样使用自定义绑定:
ko.bindingHandlers.map = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var mapObj = ko.utils.unwrapObservable(valueAccessor());
var latLng = new google.maps.LatLng(
ko.utils.unwrapObservable(mapObj.lat),
ko.utils.unwrapObservable(mapObj.lng));
var mapOptions = { center: latLng,
zoom: 5,
mapTypeId: google.maps.MapTypeId.ROADMAP};
mapObj.googleMap = new google.maps.Map(element, mapOptions);
}
};您的HTML将如下所示:
<div id="mapDiv" data-bind="style:{width:'300px',height:'300px'},map:myMap"></div>最后是你的视图模型:
function MyViewModel() {
var self = this;
self.myMap = ko.observable({
lat: ko.observable(55),
lng: ko.observable(11)});
}这里有一个fiddle,它可以做比你所要求的更多的事情,但是在你的情况下也应该可以很好地工作。
发布于 2012-11-29 01:36:42
下面是使用Knockout JS和Google Maps的一个很好的例子。希望它能帮助你走上正轨。http://www.codeproject.com/Articles/387626/BikeInCity-2-KnockoutJS-JQuery-Google-Maps
发布于 2017-04-21 19:11:12
我已经修改了"schmidlop“绑定,在输入改变时重置标记(稍后的长输入),并且标记始终位于地图的中心。
Html
<input data-bind="value: mapOne().lat" />
<input data-bind="value: mapOne().lng" />绑定,将其包含在某个js文件中,并将其包含在html中。
ko.bindingHandlers.map = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
$("#" + element.getAttribute("id")).data("mapObj","");
mapObj = ko.utils.unwrapObservable(valueAccessor());
var latLng = new google.maps.LatLng(
ko.utils.unwrapObservable(mapObj.lat),
ko.utils.unwrapObservable(mapObj.lng));
var mapOptions = { center: latLng,
zoom: 12,
mapTypeId: google.maps.MapTypeId.ROADMAP};
mapObj.googleMap = new google.maps.Map(element, mapOptions);
mapObj.marker = new google.maps.Marker({
map: mapObj.googleMap,
position: latLng,
draggable: true
});
mapObj.onChangedCoord = function(newValue) {
var latLng = new google.maps.LatLng(
ko.utils.unwrapObservable(mapObj.lat),
ko.utils.unwrapObservable(mapObj.lng));
mapObj.googleMap.setCenter(latLng);
mapObj.marker.setPosition(latLng);
};
mapObj.onMarkerMoved = function(dragEnd) {
var latLng = mapObj.marker.getPosition();
mapObj.lat(latLng.lat());
mapObj.lng(latLng.lng());
};
mapObj.lat.subscribe(mapObj.onChangedCoord);
mapObj.lng.subscribe(mapObj.onChangedCoord);
google.maps.event.addListener(mapObj.marker, 'dragend', mapObj.onMarkerMoved);
$("#" + element.getAttribute("id")).data("mapObj",mapObj);
}
};查看模型
self.mapOne = ko.observable();
self.mapOne({'lat':ko.observable(87.22),'lng':ko.observable(27.22)});https://stackoverflow.com/questions/12722925
复制相似问题