- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经创建了一个应用程序来为谷歌地图中的折线设置动画,一旦我们从下拉列表中选择了一个特定的用户,动画就会开始,该应用程序工作正常,但问题是,一旦一个特定的动画已启动并正在继续,如果我们选择另一个用户,应用程序将被挂起并显示意外的动画,
任何人都可以告诉我一些解决方案,用于在选择另一个用户之后中断动画并且需要在之后显示所选用户的折线动画
<html lang="en">
<head>
<script data-require="lodash.js@2.4.1" data-semver="2.4.1" src="http://cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript" src="https://code.angularjs.org/1.2.16/angular.js"></script>
<script type="text/javascript" src="script.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=panoramio"></script>
</head>
<body ng-app="app" ng-controller="Controller">
<select ng-change="showGPSTracking()" ng-model="user">
<option selected="selected" value="" class="">Select User</option>
<option value="1458">1458</option>
<option value="1658">1658</option>
</select>
</br></br></br></br>
<div style="width: 880px;">
<div id="map" style="width: 880px; height: 500px; float: left;"></div>
</div>
</body>
</html>
最佳答案
您遇到的问题是您只有一个全局 map
变量。每次更改用户时,您都会更新该映射并创建数百个函数调用。因此,第一个 map 上的那些函数调用开始与第二个 map 上的那些函数调用发生冲突——它们都在同一个 map 对象上工作。
我在这里快速而肮脏的修复只是让 map 对象成为局部变量,并将其传递给 autoRefresh
函数。对第一张 map 上的函数的调用仍将发生,只是结果将不可见,因为当您将 map div 重新分配给新 map 时,您实际上已经隐藏了该 map 。
我认为这并不理想,但它似乎对我有用。理想情况下,您可以通过某种方式“停止”其中一张 map 上的动画,并阻止执行添加到路线的所有功能。
var app = angular.module('app', []);
app.controller("Controller", function($scope, $http, item) {
$scope.tracker = {};
var items;
$scope.showLiveMap = false;
$scope.showLiveMap = false;
var firtslat, firstlong;
var icon = new google.maps.MarkerImage("http://maps.google.com/mapfiles/ms/micons/blue.png");
var center = null;
//var map = null; - you don't need this any more
var currentPopup;
var bounds = new google.maps.LatLngBounds();
var markLAT, markLNG, trackId;
var marker;
function moveMarker(map, marker, lat, lon) {
try {
marker.setPosition(new google.maps.LatLng(lat, lon));
map.panTo(new google.maps.LatLng(lat, lon));
} catch (e) {}
}
$scope.autoRefresh = function(map) {
try {
var route = new google.maps.Polyline({
path: [],
geodesic : true,
strokeColor: '#FF0000',
strokeOpacity: 1.0,
strokeWeight: 2,
editable: false,
map:map
}),
index=0,
marker=new google.maps.Marker({map:map,icon:icon});
if (!_.isEmpty(items)) {
angular.forEach(items, function(cordinates) {
setTimeout(function ()
{
route.getPath().push(new google.maps.LatLng(cordinates.lat, cordinates.lng));
// route.setMap(map); not necessary, you set the map when you created the route
moveMarker(map, marker, cordinates.lat, cordinates.lng);
markLAT = cordinates.lat;
markLNG = cordinates.lng;
}, 200*++index);
});
}
//
} catch (e) {
console.log(e);
}
};
function initMap(user)
{
items = item.items[user];
try {
markLAT = items[items.length - 1].lat;
markLNG = items[items.length - 1].lng;
var map = new google.maps.Map(document.getElementById("map"), {
center: new google.maps.LatLng(markLAT, markLNG),
zoom: 10,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
},
navigationControl: true,
navigationControlOptions: {
style: google.maps.NavigationControlStyle.SMALL
}
});
$scope.autoRefresh(map); // passed the local map variable into the function
} catch (e) {
console.log(e);
}
}
$scope.showGPSTracking = function() {
if (!_.isNull($scope.user)) {
initMap($scope.user);
} else {
console.log("entered");
$scope.showLiveMap = false;
}
};
});
关于javascript - 根据用户在下拉列表中的选择在谷歌地图中显示多段线动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27987172/
我有一个像这样的数组 var resultsArray = [ { name: "BMW", value: "BMW", text: "BMW" }, { name: "Mercedes-Benz",
我正在尝试实现发现的下拉检查列表 here在 ASP.NET ListBox 控件上。它将控件呈现为下拉列表,并应用所有 css。但是,这些选项不是预期的复选框,而是单选按钮。有谁知道为什么当我让它与
如何使用 Javascript 在下拉列表的更改事件中获取先前选择的索引。 最佳答案 不,这是不可能的,但您可以在 onchange 事件中使用一个变量来跟踪之前的选择 示例: var previou
我想使用一个名为 dropdown-check-list 的插件: http://code.google.com/p/dropdown-check-list/ 但是,它的某些功能似乎与谷歌浏览器不兼容
我正在尝试找出如何制作类似于苹果商店的过滤选项的过滤选项。我首先想到的是类似于网站的下拉列表。但xcode中的对象选项上似乎没有它。想知道我应该从哪里开始才能实现这种功能。 和这个类似 http://
我正在尝试为类别创建一个下拉列表。如果这检查没问题,那么它必须是数据库。 型号: 分类 var $hasMany = 'Product'; 产品 var $belongsTo = 'Category'
有六个问题要问用户。如果用户回答了这些问题,我正在尝试制作一个应用程序,该应用程序将确定在右侧使用哪种研究设计的结果。我正在用 python dash 做这个应用程序。我的 Python 代码如下。如
我的问题是我所问问题的延续,请参阅链接。 Load Country/State/City 我已经展开以从数据库加载我的下拉列表,我只需要一种方法在我的第一个下拉列表和第二个下拉列表中连接 onchan
我正在尝试为一家餐厅创建一个内部成本核算电子表格。我重新熟悉了如何创建下拉列表(在本例中用于选择成分)。 当有人选择例如从下拉列表中选择“胡萝卜”,我希望其他字段能够使用另一个电子表格中的成本数据自动
JavaScript/jQuery 新手。我在有序列表中显示了一些数据,如下所示 Data 0 Data 1. Da
我在其中一个主题上发现了这一点: http://jsfiddle.net/GHzfD/357/我想问一下从下拉列表中选择图像后如何提醒(路径)。 $("body select").msDropDow
我使用 JAVA Swing 创建了一个下拉列表。当我选择“跟踪 RCM 的状态:”时,我想在所选选项旁边创建另一个下拉列表。我应该使用 mouseactionlistener 代替吗?我试图完成类似
在 Symfony2 网站中,我尝试制作一个包含 2 个(或 3 个)下拉列表的表单,其依赖关系为国家 > 地区 > 城市。该城市是我正在使用表单编辑的元素的字段。这个想法是根据选择来填充列表。 我已
我正在尝试创建一个菜单来计算 的数量如果列表中的数量超过 5 个,请将其余的移动到下拉列表中。 基本上代码如下所示: Item 1 Item 2 Item 3 Item 4 I
当我点击要安装主题的部门时,当我点击主题时要安装的服务。但当我点击服务时却没有看到问题。我认为对json的描述不准确。你能帮我解决这个问题吗?谢谢。我的 Jquery 代码; /* Select';
我有一个包含两个值的下拉列表:Sponsor 和 Social_Worker。我想要做的是,当选择其中一个时,它会显示一个 div 并隐藏另一个 div,如果选择另一个则反之亦然。我设法使用按钮执行此
我正在创建 2 个下拉列表,第二个下拉列表基于对第一个下拉列表的选择。从mysql数据库中获取数据 索引.php P
我正在尝试使用 JS 创建互斥的下拉菜单。 只能从这 4 个操作系统中选择一个:image 当一个被选中时,其他的应该被禁用。 HTML 部分: Re
首先,我是 java 脚本的新手。我正在开发我的 Web 应用程序,我有一个下拉菜单,其中包含人员列表。使用它我知道如何传递一个人的选定值。但是我如何选择多个值(人名)并将该数据发送到后端实现。是否可
我正在使用 Laravel 框架,并且有两个下拉列表,它们都从数据库表中读取数据, 第一个它从表中读取所有记录并将其填充到选择列表中 这是我的代码: {{Form::select
我是一名优秀的程序员,十分优秀!