javascript - 如何从一些谷歌地图标记打开网络链接?
问题描述
我可以通过标记从标记打开网络链接
google.maps.event.addListener(marker, "click", function() {
window.open('http://example.com/');
});
但是,如果我需要放置 100 个标记和 100 个指向 Google 地图的链接怎么办?我的坐标和链接数组看起来像这样
var point = [[52.7081444444445, 58.6677361111111, "Sib/2377/index.html"],
[52.7039611111111, 58.668425, "Sib/2378/index.html"],
[52.6993166666667, 58.6680305555556, "Sib/2379/index.html"],
[52.6946277777778, 58.6679416666667, "Sib/2380/index.html"],
[52.6947833333333, 58.6755555555556, "Sib/2381/index.html"]];
解决方案
将 URL 添加为标记 ( .url
) 的属性。使用打开窗口this.url
for (var i = 0; i < points.length; i++) {
var point = points[i];
var marker = new google.maps.Marker({
position: {
lat: point[0],
lng: point[1]
},
map: map,
url: point[2]
});
google.maps.event.addListener(marker, "click", function() {
window.open(this.url);
});
}
代码片段:
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 10,
center: {
lat: -33.9,
lng: 151.2
}
});
setMarkers(map);
}
// Data for the markers consisting of a Latitude, a Longitude and a URL.
var points = [
[52.7081444444445, 58.6677361111111, "http://www.google.com"],
[52.7039611111111, 58.668425, "http://www.yahoo.com"],
[52.6993166666667, 58.6680305555556, "http://maps.google.com"],
[52.6946277777778, 58.6679416666667, "http://maps.google.com?q=52.6946277777778,58.6679416666667"],
[52.6947833333333, 58.6755555555556, "http://maps.google.com?q=52.6947833333333,58.6755555555556"]
];
function setMarkers(map) {
var bounds = new google.maps.LatLngBounds();
// Adds markers to the map.
for (var i = 0; i < points.length; i++) {
var point = points[i];
var marker = new google.maps.Marker({
position: {
lat: point[0],
lng: point[1]
},
map: map,
url: point[2]
});
google.maps.event.addListener(marker, "click", function() {
window.open(this.url);
});
bounds.extend(marker.getPosition());
}
map.fitBounds(bounds);
}
html,
body,
#map {
height: 100%;
margin: 0;
padding: 0;
}
<div id="map"></div>
<!-- Replace the value of the key parameter with your own API key. -->
<script async defer src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk&callback=initMap">
</script>
推荐阅读
- vue.js - Vue:在函数承诺中丢失“this”的上下文
- python - 如何从列表列表中创建一个 numpy 数组
- python - 在 Pandas 中重复后正确拆分 CSV 文件
- javascript - 浏览器 url 中的 javascript 命令弹出警报
- java - 如何在java中按对象属性拆分ArrayList?
- java - 使用 mockito 在测试类中模拟新实例的创建
- unity3d - 每个 Tilemap Tile 数据存储和检索
- ios - 为什么我的代表只通过数组的第一个成员?
- python - 通过 PyCharm 运行的脚本比直接在命令行中运行时执行得更好
- python - 使用 sympy 查找梯度并绘制向量场