gpt4 book ai didi

javascript - Angular 指令不更新谷歌地图值

转载 作者:行者123 更新时间:2023-11-29 10:35:27 24 4
gpt4 key购买 nike

我有一个名为“myMap”的指令,用于添加谷歌地图。当我尝试使用我的 Controller 功能在不同位置再次更新经度和纬度时,它不会更新指令值。显示的是相同的 map 。

这是我的指令:

directive('myMap', function () {
// directive link function
var link = function (scope, element, attrs) {
var map, infoWindow;
var markers = [];

// map config
var mapOptions = {
center: new google.maps.LatLng(attrs.latitude, attrs.longitude),
zoom: 12,
mapTypeId: google.maps.MapTypeId.ROADMAP,
scrollwheel: false
};

// init the map
function initMap() {
if (map === void 0) {
map = new google.maps.Map(element[0], mapOptions);
}
}

// place a marker
function setMarker(map, position, title, content) {
var marker;
var markerOptions = {
position: position,
map: map,
title: title,
icon: 'https://maps.google.com/mapfiles/ms/icons/green-dot.png',
animation: google.maps.Animation.Bounce

};

marker = new google.maps.Marker(markerOptions);
markers.push(marker); // add marker to array

google.maps.event.addListener(marker, 'click', function () {
// close window if not undefined
if (infoWindow !== void 0) {
infoWindow.close();
}
// create new window
var infoWindowOptions = {
content: content
};
infoWindow = new google.maps.InfoWindow(infoWindowOptions);
infoWindow.open(map, marker);
});
}

// show the map and place some markers
initMap();

setMarker(map, new google.maps.LatLng(attrs.latitude, attrs.longitude), attrs.restname, attrs.address);

};

return {
restrict: 'A',
template: '<div id="gmaps"></div>',
replace: true,
link: link
};
});

之后我从我的 HTML 中调用这个指令。这是我的 HTML:

<div class="gmaps"   my-map="" latitude="{{home.latitude}}" longitude="{{home.longitude}}"></div>

我被这个困住了。我使用了不同的方法,但在我的情况下不起作用。如何检查指令参数的不同变化,以便我可以分析经度和纬度的更新值?请帮帮我好吗?

最佳答案

在你的指令中添加观察者。

 attrs.$observe("value", function (data) {},true);

它观察指令参数的变化,并在将要改变时更新它们。
在你的情况下它将是

lahorefoodsWebSiteModule.directive('myMap', function () {
// directive link function
var link = function (scope, element, attrs) {
attrs.$observe("latitude", function (latitude) {
//This gets called when data changes.

var map, infoWindow;
var markers = [];

// map config
var mapOptions = {
center: new google.maps.LatLng(attrs.latitude, attrs.longitude),
zoom: 12,
mapTypeId: google.maps.MapTypeId.ROADMAP,
scrollwheel: false
};

// init the map
function initMap() {
if (map === void 0) {
map = new google.maps.Map(element[0], mapOptions);
}
}

// place a marker
function setMarker(map, position, title, content) {
var marker;
var markerOptions = {
position: position,
map: map,
title: title,
icon: 'https://maps.google.com/mapfiles/ms/icons/green-dot.png',
animation: google.maps.Animation.Bounce

};

marker = new google.maps.Marker(markerOptions);
markers.push(marker); // add marker to array

google.maps.event.addListener(marker, 'click', function () {
// close window if not undefined
if (infoWindow !== void 0) {
infoWindow.close();
}
// create new window
var infoWindowOptions = {
content: content
};
infoWindow = new google.maps.InfoWindow(infoWindowOptions);
infoWindow.open(map, marker);
});
}

// show the map and place some markers
initMap();

setMarker(map, new google.maps.LatLng(attrs.latitude, attrs.longitude), attrs.restname, attrs.address);
},true);
};

return {
restrict: 'A',
template: '<div id="gmaps"></div>',
replace: true,
link: link
};

});

HTML 代码将相同。希望它能解决您的问题。

关于javascript - Angular 指令不更新谷歌地图值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37191210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com