我想在谷歌地图上添加两个可点击的位置标记。当我点击按钮时,它应该用位置更改地图标记。
<script>
var map;
function initialize()
{
map = new google.maps.Map(document.getElementById('map-canvas'), {
center: new google.maps.LatLng(52.302516, 16.414546), //Setting Initial Position
zoom: 14,
});
var marker = new google.maps.Marker({
position: newLocation(),
map: map,
title: 'AGM-CORP',
icon: 'img/agm-marker.png'
});
}
function newLocation(newLat, newLng)
{
map.setCenter({
lat: newLat,
lng: newLng
});
}
google.maps.event.addDomListener(window, 'load', initialize);
$(document).ready(function ()
{
$("#1").on('click', function ()
{
newLocation(52.302516, 16.414546);
});
$("#2").on('click', function ()
{
newLocation(51.706478, 15.274753);
});
});
</script>
<div id="map-canvas"></div>
</div>
<h3>Zobacz lokalizację:</h3>
<button id="1" style="padding:10px; cursor:pointer;">Siedziba Firmy</button>
<button id="2" style="padding:10px;cursor:pointer;">Kopalnia Kruszyw</button>
</div>
答案 0 :(得分:0)
此功能只会切换视图的位置:
map.setCenter({
lat: newLat,
lng: newLng
});
改为使用:
new google.maps.LatLng(-25.363882,131.044922);
其次,您需要将事件列表器添加到标记对象才能正常工作:
// create markers on the map
marker1 = new google.maps.Marker({ ... })
marker2 = new google.maps.Marker({ ... })
marker3 = new google.maps.Marker({ ... })
// add event listener
marker1.addListener('click', function() { ... })
marker2.addListener('click', function() { ... })
进一步查看docs他们非常直接。
答案 1 :(得分:0)
var map = null
var marker = null;
var myLatLng = {
lat: 52.302516,
lng: 16.414546
};
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: new google.maps.LatLng(myLatLng.lat, myLatLng.lng),
zoom: 14,
});
marker = new google.maps.Marker({
position: myLatLng,
map: map,
title: 'Hello World!'
});
}
function updateMap(lat, lng) {;
myLatLng.lat = lat;
myLatLng.lng = lng
map.setCenter(myLatLng);
marker.setPosition(myLatLng);
}
$(document).ready(function() {
$("#1").on('click', function() {
updateMap(52.302516, 16.414546);
});
$("#2").on('click', function() {
updateMap(51.706478, 15.274753);
});
});
我正在使用新标记启动地图。 Working jffiddle is here
答案 2 :(得分:0)
这会奏效。拥有一个包含marker
的全局变量。每当更改位置时,使用Lat
方法将标记设置在Lng
和setPosition
的位置,并使用setCenter
方法在中心显示标记。无需每次都启动地图。
var map,marker;
function initialize()
{
map = new google.maps.Map(document.getElementById('googleMap'), {
center: new google.maps.LatLng(52.302516, 16.414546), //Setting Initial Position
zoom: 6,
});
setLocation(52.302516,16.414546);
}
function setLocation(newLat, newLng)
{
var latlng = new google.maps.LatLng(newLat,newLng);
if(marker) //Remove the marker, if already set
{
marker.setMap(null);
}
marker = new google.maps.Marker({
position: latlng,
map: map,
title: 'AGM-CORP'
});
map.setCenter(latlng);
}
$(document).ready(function ()
{
$("#1").on('click', function ()
{
setLocation(13.070814558816117, 80.2656996835234);
});
$("#2").on('click', function ()
{
setLocation(59.4739316352335,-110.89646088128342);
});
});