Javascript 谷歌地图让搜索标记打开信息窗口
下面的地图有一个内置的搜索功能,在提交搜索时会删除pin 地图还有一个GeoJson层,如果单击该层,将打开一个信息窗口 目前,信息窗口只能在用户手动单击多边形时打开 有没有可能这样,当用户搜索一个地址时,比如说“Calgary Canada”,当pin丢失时,它会自动打开信息窗口 如果标记下没有多边形,则不应打开任何对象Javascript 谷歌地图让搜索标记打开信息窗口,javascript,google-maps-api-3,Javascript,Google Maps Api 3,下面的地图有一个内置的搜索功能,在提交搜索时会删除pin 地图还有一个GeoJson层,如果单击该层,将打开一个信息窗口 目前,信息窗口只能在用户手动单击多边形时打开 有没有可能这样,当用户搜索一个地址时,比如说“Calgary Canada”,当pin丢失时,它会自动打开信息窗口 如果标记下没有多边形,则不应打开任何对象 //此示例使用Google Place Autocomplete将搜索框添加到地图中 //特色。人们可以进入地理搜索。搜索框将返回一个 //包含位置和预测搜索词组合的拾取列
//此示例使用Google Place Autocomplete将搜索框添加到地图中
//特色。人们可以进入地理搜索。搜索框将返回一个
//包含位置和预测搜索词组合的拾取列表。
//此示例需要Places库。包括图书馆=地方
//第一次加载API时的参数。例如:
//
函数initAutocomplete(){
var map=new google.maps.map(document.getElementById('map'){
缩放:5,
中心:{lat:49.656963,lng:-112.506664},
mapTypeId:“路线图”,
手势处理:“贪婪”
});
map.data.loadGeoJson('https://api.npoint.io/a5cec0395277a59090e7');
//将每个字母涂成灰色。当isColorful属性
//设置为true。
map.data.setStyle(函数(特性){
var color=feature.getProperty('color');
return/**@type{!google.maps.Data.StyleOptions}*/({
fillColor:color,
strokeColor:'黑色',
冲程重量:2
});
});
//带有健康区域名称和社区归属感得分的弹出窗口
var infoWindow=new google.maps.infoWindow({
zIndex:2
});
map.data.addListener('click',函数(事件){
map.data.revertStyle();
overrideStyle(event.feature,{strokeWeight:2,strokeColor:'black',zIndex:1});
var CDNAME=event.feature.getProperty('CDNAME');
var COLOR=event.feature.getProperty('COLOR');
infoWindow.setPosition(event.latLng);
infoWindow.setOptions({
像素偏移:{宽度:0,高度:-3}
});
infoWindow.setContent(
“CDNAME:”+CDNAME+“
“+
“颜色:”+颜色+“”
);
打开(地图);
});
//创建搜索框并将其链接到UI元素。
var input=document.getElementById('pac-input');
var searchBox=newgoogle.maps.places.searchBox(输入);
map.controls[google.maps.ControlPosition.TOP_LEFT].push(输入);
//将搜索框结果偏向当前地图的视口。
addListener('bounds_changed',function(){
searchBox.setBounds(map.getBounds());
});
var标记=[];
//侦听用户选择预测并检索时激发的事件
//关于那个地方的更多细节。
searchBox.addListener('places\u changed',function(){
var places=searchBox.getPlaces();
如果(places.length==0){
回来
}
//清除旧的标记。
markers.forEach(函数(marker){
marker.setMap(空);
});
标记=[];
//对于每个位置,获取图标、名称和位置。
var bounds=new google.maps.LatLngBounds();
地点。forEach(功能(地点){
如果(!place.geometry){
log(“返回的位置不包含几何图形”);
回来
}
变量图标={
网址:'http://maps.google.com/mapfiles/ms/icons/blue.png',
尺寸:新谷歌地图尺寸(50,75),
来源:新google.maps.Point(0,0),
主持人:新谷歌地图点(25,75)
};
//为每个地方创建一个标记。
markers.push(新的google.maps.Marker)({
地图:地图,
图标:图标,
标题:place.name,
位置:place.geometry.location,
动画:google.maps.animation.DROP
}));
if(place.geometry.viewport){
//只有地理代码具有视口。
联合(place.geometry.viewport);
}否则{
扩展(place.geometry.location);
}
});
映射边界(bounds);
});
}
/*始终明确设置贴图高度以定义div的大小
*包含映射的元素*/
#地图{
身高:100%;
}
/*可选:使示例页面填充窗口*/
html,正文{
身高:100%;
保证金:0;
填充:0;
}
#描述{
字体系列:Roboto;
字体大小:15px;
字体大小:300;
}
#infowindowcontent.title{
字体大小:粗体;
}
#信息窗口内容{
显示:无;
}
#地图#信息窗口内容{
显示:内联;
}
.pac卡{
利润率:10px 10px 0;
边界半径:2px 0 0 2px;
框大小:边框框;
-moz框大小:边框框;
大纲:无;
盒影:0 2px 6px rgba(0,0,0,0.3);
背景色:#fff;
字体系列:Roboto;
}
#pac容器{
垫底:12px;
右边距:12px;
}
.pac控制{
显示:内联块;
填充:5px11px;
}
.pac控制标签{
字体系列:Roboto;
字体大小:13px;
字号:30
map.data.loadGeoJson('https://api.npoint.io/a5cec0395277a59090e7', null, function(features) {
jsonFeatures = features;
});
// Create a marker for each place.
var marker = new google.maps.Marker({
map: map,
icon: icon,
title: place.name,
position: place.geometry.location,
animation: google.maps.Animation.DROP
});
markers.push(marker);
for (var i = 0; i < jsonFeatures.length; i++) {
console.log(jsonFeatures[i].getGeometry().getType());
if (jsonFeatures[i].getGeometry().getType() == "Polygon") {
console.log("Polygon");
var polygon = new google.maps.Polygon({
paths: jsonFeatures[i].getGeometry().getArray()[0].getArray()
});
if (google.maps.geometry.poly.containsLocation(place.geometry.location, polygon)) {
marker.feature = jsonFeatures[i];
console.log("polygon[" + i + "] contains " + place.geometry.location.toUrlValue(6));
// openInfoWindow(place.geometry.location, jsonFeatures[i], marker);
marker.addListener('click', function(evt) {
openInfoWindow(place.geometry.location, this.feature, this);
});
google.maps.event.trigger(marker, 'click');
}
}
}
map.data.addListener('click', function(event) {
map.data.revertStyle();
map.data.overrideStyle(event.feature, {
strokeWeight: 2,
strokeColor: 'black',
zIndex: 1
});
openInfoWindow(event.latLng, event.feature);
});
function openInfoWindow(latLng, feature, marker) {
var CDNAME = feature.getProperty('CDNAME');
var COLOR = feature.getProperty('COLOR');
if (marker == null) {
infoWindow.setPosition(latLng);
} else {
infoWindow.setOptions({
pixelOffset: null
});
}
infoWindow.setContent(
"CDNAME: <b>" + CDNAME + "</b><br />" +
"COLOR: <b>" + COLOR + "</b>"
);
infoWindow.open(map, marker);
}