谷歌地图 API v3.0 保存对标记的引用
Google Maps API v3.0 Saving a reference to a marker
我正在使用Google Maps API v3.0地图有多个标记(所以任何使用 1 个标记的例子都不是我想要的)到目前为止,事情进展顺利。但我不清楚如何在单击特定标记时保存对特定标记的引用? (我读过几个地方的建议,但没有例子)
有两个单独的实例,我希望直接定位/引用回特定标记以控制/更改行为/图像。等等(随便什么)。
场景 #1 的示例:1.)当我单击标记时,我目前正在"弹跳它"并将其图标更改为其他图像。 如果我点击一个新标记..我想定位旧标记以停止反弹/恢复到旧图标。 我通过在"标记"数组上运行循环并停止所有标记上的所有动画来实现这一点。并将所有图标更改为旧(原始)图像。 它有效..但我不想有运行循环的开销。 展望未来,我想将旧标记更改为第三个图标图像。(以表明它以前已经与之交互过)。所以我需要一种方法来保存/设置对标记的引用,一旦单击它。.所以我可以再次定位它(直接)
场景 #2 的示例:1.)我在地图之外有一些"控件"(元素),我想用它来与地图以及特定的标记进行交互。
即:在地图外部有一个标记/条目的图像......用户点击它......它将地图滚动/平移到该特定标记(以及更改动画和图标图像)
这是我当前的点击侦听器:
google.maps.event.addListener(addr[n], 'click', (function(marker, n) {
return function() {
infowindow.setContent(addr[n].title + "<br />" + addr[n].company + "<br />" + addr[n].workphone);
infowindow.open(map, addr[n]);
//increase z-index when marker has focus
addr[n].setZIndex(google.maps.Marker.MAX_ZINDEX + 1);
}
})(marker, n));
问:如何保存对地图上标记的 DIRECT 引用,以便在另一个函数中使用并在那里引用?
回应松饼人:
谢谢。。。 不过,我仍然不清楚,至少关于它与我的项目有何关系。
我已经将东西保存到数组中了。 (地址[n]从上面)
这是为我构建 addr[n] 数组的类方法:
public static function GMapMarker($markerId, $memberObject, $addressObject){
$marker = 'var m_'.$memberObject->Id.'_'.$addressObject->AddressNum.' = new google.maps.LatLng('.$addressObject->Lat.','.$addressObject->Lon.');
marker = new google.maps.Marker({
animation: google.maps.Animation.DROP,
position: m_'.$memberObject->Id.'_'.$addressObject->AddressNum.',
title:"'.addslashes($memberObject->Full_Name).'",
company:"'.addslashes($memberObject->Company).'",
icon:"marker_gd.php?m=' . $markerId . '",
markerid:"'.$markerId.'",
id:"'.addslashes($memberObject->Id).'",
addressnum:"'.addslashes($addressObject->AddressNum).'",
refid:"m_'.$memberObject->Id.'_'.$addressObject->AddressNum.'",
workphone:"'.addslashes($memberObject->Work_Phone).'",
zIndex: '. (100 - preg_replace('/'D/','', $markerId)) .'
});
addr.push(marker);';
return $marker;
}
我无法知道该特定标记在数组中的顺序/索引是什么。 但是,我确实给出了唯一的名称,并且标记了纬度/纬度坐标....
但是我不清楚以后如何使用它来定位标记?
这是我在实现中使用的:
var markers = [];
for (var index = 0; index < data.length; index++) {
var latlng = new google.maps.LatLng(data[index].lat, data[index].lng);
var marker = new google.maps.Marker({position: latlng, map: map, title: data[index].label, icon: 'images/dot.gif'});
google.maps.event.addListener(marker, 'click', function() {
markers.push(marker); /* marker saved here for later reference*/
});
}
标记 [] 填充了您希望以后使用的标记。例如标记[0]。
您可以添加 javascript 支持的其他侦听器来处理标记上的其他事件,例如拖动和悬停。
- 做<img>或者<画布>保存对原始(大)dataUrl对象的引用
- 谷歌地图 API v3.0 保存对标记的引用
- 为什么jQuery's每个循环的函数都保存对元素对象的引用
- 在Javascript中,如何区分与实际数据一起保存的对象和作为引用保存的对象
- 猫鼬JS预保存钩子与引用值
- 使用 Function.prototype.bind 或保存的引用
- 同步代码框 - 调用 API - 解析 JSON - 获取引用 - 保存新对象
- 在哈希数组中保存对 jquery 元素的引用
- 如何保存引用用户对象的分析对象
- 引用下划线模板中 require 模块内保存的枚举值
- 将引用$(this)保存到DB
- 保存对立即调用的函数的引用
- 如何获取模型内部的组件引用保存回调函数
- 我应该如何以JSON格式将当前引用保存到父节点
- 将对象或函数的引用保存为匿名函数的变量的Javascript错误做法
- 保存& # 39;这个# 39;javascript原型事件处理程序中的引用
- 在Backbone中保存对全局集合的引用的最佳模式
- 如何在不保存的情况下更新多个firebase引用
- 保存对内置方法的引用的好处
- 如何将引用保存到表行中的复选框