Javascript 如何从方向服务中单击标记打开弹出窗口?
更新Javascript 如何从方向服务中单击标记打开弹出窗口?,javascript,php,google-maps,google-maps-api-3,Javascript,Php,Google Maps,Google Maps Api 3,更新 当我单击绿色标记时,它是位置的显示地址。我可以更改它吗 以后编辑: 点击方向服务中的标记可以打开弹出窗口吗? 或者尝试另一种方法,比如只从方向服务中隐藏标记(绿色标记),只显示红色标记(只隐藏绿色标记而不是路线)?这是一种好方法吗 如果不可能,请提出一些备选方案。 较老的: 我在谷歌地图上有两种类型的标记。红色标记是代表位置的普通标记。绿色标记是路线标记(它代表地图的许多航路点)。 我用文本框修改了信息窗口。单击红色标记打开该窗口 实际上,我想做的是,首先在谷歌地图上放置多个标记,然后在这
当我单击绿色标记时,它是位置的显示地址。我可以更改它吗 以后编辑:
点击方向服务中的标记可以打开弹出窗口吗?
或者尝试另一种方法,比如只从方向服务中隐藏标记(绿色标记),只显示红色标记(只隐藏绿色标记而不是路线)?这是一种好方法吗 如果不可能,请提出一些备选方案。 较老的: 我在谷歌地图上有两种类型的标记。红色标记是代表位置的普通标记。绿色标记是路线标记(它代表地图的许多航路点)。
我用文本框修改了信息窗口。单击红色标记打开该窗口 实际上,我想做的是,首先在谷歌地图上放置多个标记,然后在这些标记之间绘制路线。这件事完成了。提醒的事情是单击绿色标记,打开一个弹出窗口,用户输入价格,然后单击按钮。然后我得到这个值并将其存储到数据库中。
问题是: (1) 如何在单击绿色标记时打开相同的信息窗口?
简而言之,如何为单击绿色标记时显示信息窗口编写代码。
如何查找绿色标记的单击事件
代码是:
<script type="text/javascript">
var markerarray=new Array();
//for way points
var waypts=[];
//array in json format for placing multiple marker
var locations = <?php echo json_encode($lat1);?>;
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 11,
center: new google.maps.LatLng(23.0171240, 72.5330533),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infowindow = new google.maps.InfoWindow();
<!-- ************* for placing markers ************ -->
var marker, i;
for (i = 0; i < locations.length; i++)
{
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][3], locations[i][4]),
map: map //enable if you want marker
});
//push value into way points
waypts.push({
location:locations[i][0],
stopover:true
});
//create array for polyline
markerarray[i] = marker.getPosition();//(Array(locations[i][5], locations[i][6]));
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
var data='<div style="height:150px !important"><table><tr><td>Enter Price</td></tr><tr><td><input type="text" name="prc" id="prc" /></td></tr></table></div>';
infowindow.setContent(data);
infowindow.open(map, marker);
}
})(marker, i));
}
<!-- ************** for route between markers ******************* -->
var first=locations[locations.length-1][0];
var directionsDisplay;
var directionsService = new google.maps.DirectionsService();
//directionsDisplay = new google.maps.DirectionsRenderer();
directionsDisplay = new google.maps.DirectionsRenderer({
polylineOptions: {
strokeColor: 'red',//"black",
strokeOpacity: 1.0,
strokeWeight: 3
}
});
var start = locations[0][0];//"Bopal, Ahmedabad, Gujarat, India";
var end = locations[locations.length-1][0];//"Nikol, Ahmedabad, Gujarat, India";
//remove start destination from array
waypts.shift();
//remove end destination from array
waypts.pop();
var request = {
origin:start,
destination:end,
waypoints:waypts,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
}
});
directionsDisplay.setMap(map);
</script>
var markerarray=新数组();
//路标
var-waypts=[];
//json格式的数组,用于放置多个标记
var位置=;
var map=new google.maps.map(document.getElementById('map'){
缩放:11,
中心:新google.maps.LatLng(23.0171240,72.5330533),
mapTypeId:google.maps.mapTypeId.ROADMAP
});
var infowindow=new google.maps.infowindow();
var标记,i;
对于(i=0;i
提前感谢。这不是不可能的,但编写代码需要一些时间,方法是,如果您正在使用移动设备,那么您需要从您的设备加速器,并在位置更改时调用地理定位函数,我认为您理解,第二种方法是纯javascript方法,因为您需要在设置的间隔内调用地理定位函数,也需要从标记中分别画线marker函数仅在设置的时间间隔内调用,以便使用infowindow获取当前位置。例如: var映射
function initialize() {
var mapOptions = {
zoom: 6,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('map-canvas'),
mapOptions);
//keep this in setInterval
// Try HTML5 geolocation
if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var pos = new google.maps.LatLng(position.coords.latitude,
position.coords.longitude);
var infowindow = new google.maps.InfoWindow({
map: map,
position: pos,
content: 'Location found using HTML5.'
});
map.setCenter(pos);
}, function() {
handleNoGeolocation(true);
});
} else {
// Browser doesn't support Geolocation
handleNoGeolocation(false);
}
}
function handleNoGeolocation(errorFlag) {
if (errorFlag) {
var content = 'Error: The Geolocation service failed.';
} else {
var content = 'Error: Your browser doesn\'t support geolocation.';
}
var options = {
map: map,
position: new google.maps.LatLng(60, 105),
content: content
};
var infowindow = new google.maps.InfoWindow(options);
map.setCenter(options.position);
}
//close here your set interval
google.maps.event.addDomListener(window, 'load', initialize);
这是可能的。可以隐藏默认标记,以便在单击的位置上构建自定义标记。此代码用于隐藏标记
var rendererOptions = {
suppressMarkers : true
}
var directionsDisplay = new google.maps.DirectionsRenderer(rendererOptions);
你问错问题了。如果要将事件侦听器添加到标记,则需要对其进行引用。从方向服务获取标记引用的唯一有文档记录的方法是自己创建标记。