当前位置: 首页 > 知识库问答 >
问题:

如何为Google Maps API directionService使用现有的标记而不是定义新的标记?

孙博艺
2023-03-14

我正在使用谷歌地图API来显示一个位置的方向。

在页面加载时,我在地图上设置了一个标记:(仅供参考:我没有包括坐标,但你可以假设它们是定义好的)

var destination = [xxx, yyy, 11, xxx, yyy]; //x-coord,y-coord,zoom,x-center,x-center
var dublin = [xxx, yyy, 11, xxx, yyy]; //x-coord,y-coord,zoom,x-center,x-center
var directionsService = new google.maps.DirectionsService();
var directionsDublin;

function initialize() {

  directionsDublin = new google.maps.DirectionsRenderer();
  var centerMap = new google.maps.LatLng(destination[3],destination[4]);

  map = new google.maps.Map(document.getElementById('map-canvas'), {
    mapTypeId: google.maps.MapTypeId.ROADMAP,
    center: centerMap,
    zoom: destination[2]
  });

  marker1 = new google.maps.Marker({
      position: new google.maps.LatLng(destination[0], destination[1]),
      map: map
  });
  marker1.setAnimation(google.maps.Animation.DROP);
}

function callback(results, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    for (var i = 0; i < results.length; i++) {
      createMarker(results[i]);
    }
  }
}

function createMarker(place) {
  var placeLoc = place.geometry.location;
  var marker = new google.maps.Marker({
    map: map,
    position: place.geometry.location
  });

  google.maps.event.addListener(marker, 'click', function() {
    infowindow.setContent(place.name);
    infowindow.open(map, this);
  });
}

google.maps.event.addDomListener(window, 'load', initialize);
$(document).ready(function() {

  $( "#tNorth" ).on( "click", function() {

    if ($("#north").css('display') != 'none') {
      //set zoom and center
      map.setZoom(destination[2]);
      map.setCenter(new google.maps.LatLng(destination[3], destination[4]));
      //remove the route
      directionsDublin.setMap(null);
      //remove the text
      $("#north").css('display':'none');
    }
    else {
      //create travel route
      var request2 = {
        origin: new google.maps.LatLng(dublin[0], dublin[1]),
        destination: new google.maps.LatLng(destination[0], destination[1]),
        travelMode: google.maps.DirectionsTravelMode.DRIVING
      };
      //display route on map
      directionsDublin.setMap(map);
      directionsService.route(request2, function(result, status) {
        if (status == google.maps.DirectionsStatus.OK) {
          directionsDublin.setDirections(result);
        }
      });
      //add the text
      $("#north").css('display':'block');
    }
  });
});

但是,当路由显示时,它会在页面上放置2个新标记。由于目标标记已经在页面上,它将被新标记覆盖。是否有一种方法可以代替定义destination:newgoogle.maps.latlng(destination[0],destination[1]),而是定义类似于destination:marker1的东西??

这会比互相展示两个标记好...

共有1个答案

燕永昌
2023-03-14

在DirectionRenderOptions中使用{suppressmarkers:true}可防止DirectionsRenderer向地图添加标记(它仍将显示路线)

directionsDublin = new google.maps.DirectionsRenderer({suppressMarkers:true});
 类似资料:
  • 我所拥有的: 我非常肯定,我可以用来实现这一点,但我不能真正使其工作。创建只是告诉浏览器我需要哪个字段的标签,但不能从中获得实际值。 我还尝试了这样的方法,但是为了使其工作,我必须首先分析的值,这将给出列的名称,然后执行,但是column是一个变量,我无法以任何方式使其工作。 备选案文: 我有点感兴趣的是,将找到的与该路径相对应的内容放入输入中(其他表单元素也是如此),但使用label则不同。 所

  • 问题内容: 为什么要使用HTML5语义标记喜欢,,,和的,而不是简单地用首选呢? 我创建了一个网页并使用了这些标签,但它们与并没有什么区别。他们的主要目的是什么? 是否仅在使用时为标签指定了适当的名称? 请解释。我已经浏览了许多站点,但是找不到这些基础知识。 问题答案: 顾名思义,这仅是出于语义目的。它用于改善文档的自动化处理。自动化处理比您想像的要多得多-搜索引擎对每个网站的排名都来自对所有网站

  • 问题内容: 我正在尝试创建一种类似于英语的小型语言来指定任务。基本思想是将陈述分为动词和名词短语,这些动词应适用于它们。我正在使用nltk,但未获得我希望的结果,例如: 在每种情况下,它都未能意识到第一个单词(选择,移动和复制)被用作动词。我知道我可以创建自定义标签和语法来解决此问题,但是与此同时,当很多此类东西不在我的支持范围内时,我犹豫要重新发明轮子。我特别希望可以同时处理非英语语言的解决方案

  • 我找到了这个查询,但它只适用于新记录:

  • 我正在尝试实现一个API,可以将标签添加到AWS中的所有现有资源。我不能为此使用AWS CloudForm方法。 是否有任何常见的方法通过传递ResourceID向现有AWS资源添加自定义标记?

  • 我一直在编写一组类来允许一个简单的类似python的-函数。下面的片段(几乎)和预期的一样工作。然而,两个变量和不是。 我一直在使用gcc 7.3.0。以下是MCVE: