通过标记移动使Infowindow保持打开状态

时间:2019-04-05 09:54:33

标签: infowindow

你好,我已经在应用程序中实现了带有移动汽车的google map。单击每个标记都会打开信息窗口。但是infoWindow在每次刷新/ ajax调用新的lat,lang后关闭。我试图使infoWindow保持打开状态并与单击的标记一起移动。我的代码如下:

var marker;
var markers = {};
var image;
var device;
var device_icon;
var device_color;
var engine_status;
var moving;
var external_power;
var engine_block;
var myLat = "23.771410000000003";
var myLong = "90.35298833333333";
var infoWindow = new google.maps.InfoWindow();
var map = new google.maps.Map(document.getElementById("map_div"), {
    center: new google.maps.LatLng(myLat,myLong),
    zoom: 14,
    mapTypeId: google.maps.MapTypeId.ROADMAP,
    mapTypeControl: true,
    mapTypeControlOptions: {
      position: google.maps.ControlPosition.RIGHT_TOP
    },
    streetViewControl: true,
    streetViewControlOptions: {
      position: google.maps.ControlPosition.RIGHT_CENTER
    },

    });

var url = "http://api_url?api=user&ver=1.0&"; 
var key = user_details.api_key;
var cmd = 'OBJECT_GET_LOCATIONS';
var position;
var current_address = '';

function get_location(){
            $.ajax({
                type: "GET",
                url: url+"key="+key+"&cmd="+cmd+",*",
                success: function(result)
                {
                    /* start result object loop*/
                    Object.keys(result).forEach(function(key) {
                        result[key].imei = key;
                        position = result[key];
                        if(position.speed>0){
                            device_color = "http://maps.google.com/mapfiles/ms/icons/green-dot.png";
                            engine_status= 'ON';
                            moving='Moving';
                        }
                        else{
                            device_color = "http://maps.google.com/mapfiles/ms/icons/blue-dot.png";
                            engine_status= 'OFF';
                            moving='Stop';
                        }
                        /* get address from lat and long value*/
                        var lat_long = position.lat+','+position.lng;
                        $.ajax({
                            type: "POST",
                            url: "http://api_url?api=user&ver=1.0&key=<api_key>&cmd=GET_ADDRESS,"+lat_long,
                            success: function(res){
                                current_address = res;
                            }
                        }); 

                        var marker = markers[position.imei];
                        image = 'https://chart.googleapis.com/chart?chst=d_bubble_icon_text_small&chld='+device_icon+'|bb|'+position.name+'|'+device_color+'|FFFFFF';
                        if (!marker) {
                            marker = createMarker({
                                position: new google.maps.LatLng(position.lat, position.lng),
                                map: map,
                                icon:device_color
                              }, "<p>"+position.name+"<p>"+
                              "<p>Status:"+moving+"<p>"+
                              "<p>Speed:"+position.speed+" kmh<p>"+
                              "<p>Engine: "+engine_status+"</p>"+
                              "<p>Address: "+current_address+"</p>"                           
                              );
                            markers[position.imei] = marker;
                        }
                        else {
                            marker.setMap(null);
                            marker = createMarker({
                                position: new google.maps.LatLng(position.lat, position.lng),
                                map: map,
                                icon:device_color
                              }, "<p>"+position.name+"<p>"+
                              "<p>Status:"+moving+"<p>"+
                              "<p>Speed:"+position.speed+" kmh<p>"+
                              "<p>Engine: "+engine_status+"</p>"+
                              "<p>Address: "+current_address+"</p>"                           
                              );
                            markers[position.imei] = marker;
                        }

                    })
                    /*end of result object loop */
                },
                error:function(er){
                    console.log('error occured');
                }
            });
        }
function createMarker(options, html) {
         marker = new google.maps.Marker(options);
     var myitem;
         if (html) {
            google.maps.event.addListener(marker, "click", function () {
               myitem = this;
               infoWindow.setContent(html);
               infoWindow.setPosition(options.position,this);
           infoWindow.open(options.map,this);
            }); 
           }
           return marker;
}

有人可以帮助我,即使在刷新位置后如何保持infoWindow打开并坚持单击标记?预先感谢

0 个答案:

没有答案