Google Map make a polyline connecting the markersMarker and Marker

Viewed 33

I am a student trying to become a java developer in Korea I want to draw a polyline connecting the markers with a click event, not with directions. I'll give you an exampleenter image description here

It's not finished yet, but I'll show you what I made I made a mistake but please understand What I want is to draw a polyline by connecting two fixed markers.

var map, polyline,markers = new Array();
var stockholm = {lat:45,lng:10};        // 맵 중앙 설정
function initMap(){ 
    // map options
    var options = {
        zoom:4,
        center:stockholm, 
        streetViewControl: true,
        draggable:true,
        mapTypeId: "roadmap",
    
        
        // 맵 기본 컨트롤 설정
        mapTypeControl: true,
        mapTypeControlOptions: {
            position: google.maps.ControlPosition.RIGHT_TOP
        },
        panControl: true,
        panControlOptions: {
            position: google.maps.ControlPosition.RIGHT_TOP
        },
        zoomControl: true,
        zoomControlOptions: {
            style: google.maps.ZoomControlStyle.SMALL,
            position: google.maps.ControlPosition.RIGHT_TOP
        },
            scaleControl: true
        }
        // Map 호출 ======================================================================
        map = new google.maps.Map(document.getElementById('map'),options);
      
        // polyline  옵션 지정 ============================================================
        polyline = new google.maps.Polyline({
            strokeColor: 'red',
            strokeWeight: 3,
            map: map
        });
      
        google.maps.event.addListener(map, 'click', function (event) {
            addPoint(event.latLng);
        });
        // searchbox===================
        const input = document.getElementById("pac-input");
        const searchBox = new google.maps.places.SearchBox(input);
        map.controls[google.maps.ControlPosition.TOP_LEFT].push(input);
        let markers1 = [];
        // Listen for the event fired when the user selects a prediction and retrieve
        // more details for that place.
        searchBox.addListener("places_changed", () => {
            const places = searchBox.getPlaces();
            if (places.length == 0) {
                return;
            }
            // Clear out the old markers.
            markers1.forEach((marker) => {
                marker.setMap(null);
            });
            markers1 = [];
            // For each place, get the icon, name and location.
            const bounds = new google.maps.LatLngBounds();
            places.forEach((place) => {
                if (!place.geometry || !place.geometry.location) {
                    console.log("Returned place contains no geometry");
                    return;
                }
                const icon = {
                    url: place.icon,
                    size: new google.maps.Size(71, 71),
                    origin: new google.maps.Point(0, 0),
                    anchor: new google.maps.Point(17, 34),
                    scaledSize: new google.maps.Size(25, 25),
                };
                // Create a marker for each place.
                markers1.push(new google.maps.Marker({
                    map,
                    icon,
                    title: place.name,
                    position: place.geometry.location,
                }));
                if (place.geometry.viewport) {
                    bounds.union(place.geometry.viewport);
                }else {
                    bounds.extend(place.geometry.location);
                }
            
            });
            map.fitBounds(bounds);
        });
        
    // 고정 마커 추가 
    var markers = [
        
        // 가나
        {
          coords:{lat:6.6666004, lng:-1.6162709},
          iconImage:'assets/img/places/stparkdublin.png',
          content:'<div style="height:auto;width:400px;"><h1>가나-쿠마시</h1>쿠마시는 가나 아샨티 주의 주도이며 구 아샨티 왕국의 수도였다. 수도인 아크라에서 북서쪽으로 약 250km 떨어져 있다. 쿠마시는 적도로부터 북쪽으로 약 482km, 기니만으로터 북쪽으로 약 160km 에 위치한다.',
        },
        {
          coords:{lat:5.6037168,lng:-0.1869644},
          iconImage:'assets/img/places/botanic garden.png',
          content:'<div style="height:auto;width:400px;"><h1>가나-아크라</h1>아크라는 가나 공화국의 수도이자 약 227만 명의 인구를 가진 가나 최대의 도시이다. 도시 자체도 아크라 메트로폴리스 특구에 속해 있으며, 그 면적은 약 139km²이다. 아크라의 관광지 중에 가나 국립 박물관이 있다. 코토카 국제공항이 있다.',
        },
        {
          coords:{lat:5.1315, lng:-1.2794744},
          iconImage:'assets/img/places/stparkdublin.png',
          content:'<div style="height:auto;width:400px;"><h1>가나-케이프코스트</h1>케이프코스트는 가나의 항구 도시로, 중앙 주의 주도이다. 16세기부터 영국과 포르투갈, 스웨덴, 덴마크, 네덜란드의 통치를 받았다. 15세기 포르투갈이 이 곳을 발견했으며 1653년 스웨덴이 케이프코스트 성을 건설했다. 이 성은 현재 세계유산으로 지정되어 있다.',
        },
        {
          coords:{lat:9.393908, lng:-0.8556313999999999},
          iconImage:'assets/img/places/swordscastle.png',
          content:'<div style="height:auto;width:400px;"><h1>가나-타말레</h1>타말레은 가나 북부 주의 주도이다. 인구는 55만명이다.',
        },
        {
          coords:{lat:10.7875419, lng:-0.8579818},
          iconImage:'assets/img/places/Howth.png',
          content:'<div style="height:auto;width:400px;"><h1>가나-볼가탕가</h1>볼가탕가는 가나의 도시이다. 경작과 가축 사육이 주된 생업이다.',
        },
    ];
     var gmarkers = [];
    for(var i = 0; i < markers.length; i++){
      gmarkers.push(addMarker(markers[i]));
    }
    
    

    
    
    const sidebar = document.getElementById("sidebar");         // sidebar
    
    
    var activeInfoWindow = null; 
    
    //Add MArker function
    function addMarker(props){
      var marker = new google.maps.Marker({
        position:props.coords,
        map:map,
        descrip:props.content,
        

      });
      

      

      //Check content
      if(props.content){
        var infoWindow = new google.maps.InfoWindow({
          content:props.content
        });
        marker.addListener('click',function(){
          infoWindow.open(map,marker);
          for(var i=0;i<markers.length;i++){
              sidebar.innerHTML = props.content;
          }
        });
        marker.addListener('click', function () {
            if (activeInfoWindow) { activeInfoWindow.close();}
            infoWindow.open(map, marker);
            activeInfoWindow = infoWindow;
        });
        
      }
      return marker;
    }
    
    
   
  var markerCluster = new MarkerClusterer(map, gmarkers, 
    {
      imagePath:'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m',
      gridSize:100,
      minClusterSize:10,
    });
  
 
  
  }
  
google.maps.event.addDomListener(window, 'load', initMap);


//poly line ======================================================================
var latlnglatlng = new Array;
function removePoint(marker) {

        for (var i = 0; i < markers.length; i++) {

            if (markers[i] === marker) {

                markers[i].setMap(null);
                markers.splice(i, 1);

                polyline.getPath().removeAt(i);
            }
        }
    }

    function addPoint(latlng) {

        var marker = new google.maps.Marker({
            position: latlng,
            map: map
        });
       
        markers.push(marker);
        //console.log(markers.position.lng.Scopes);
        polyline.getPath().setAt(markers.length - 1, latlng);

        google.maps.event.addListener(marker, 'click', function (event) {

            removePoint(marker);
        });
    }
#map {
    height: 100%;
}

html,
body {
    height: 100%;
    margin: 0;
    padding: 0;
}
<div id="map"></div>
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDjtW34Ax16khc7UYth6--V4pNFX1XlHUE&libraries=places"></script>
<script src="https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/markerclusterer.js"></script>
Thanks again for watching I really want to solve this, I've been thinking about it for a month

0 Answers
Related