Javascript 隐藏信息窗口标记并动态显示

Javascript 隐藏信息窗口标记并动态显示,javascript,cordova,google-maps,Javascript,Cordova,Google Maps,我正在使用这个插件cordova插件googlemaps 尽管问题并不局限于此 I包含名称、地址和latlong的结果数组。 我用for循环将标记放在地图上。 单击标记,信息窗口打开 但是我想要的是从单击列表视图中的项目打开特定的标记信息窗口 我发布了一些代码来获得微妙的想法 for (; i < noOfData; ++i) { (function(n) { setTimeout(function() {

我正在使用这个插件cordova插件googlemaps 尽管问题并不局限于此 I包含名称、地址和latlong的结果数组。 我用for循环将标记放在地图上。 单击标记,信息窗口打开

但是我想要的是从单击列表视图中的项目打开特定的标记信息窗口

我发布了一些代码来获得微妙的想法

for (; i < noOfData; ++i) {
                (function(n) {
                    setTimeout(function() {
                        var position = new plugin.google.maps.LatLng(resultList[n].latitude, resultList[n].longitude);
                        markers.push(position);
                        $rootScope.map.addMarker({
                            'position': position,
                            'title': resultList[n].name,
                            'index': n,
                            'snippet': resultList[n].address,
                            "styles": {
                                'text-align': 'center',
                                'font-style': 'italic',
                                'color': 'red'
                            },
                            disableAutoPan: false
                        }, function(marker) {
                            $scope.listResults = resultList;
                            if ((+n + 1) == noOfData) {
                                var latLngBounds = new plugin.google.maps.LatLngBounds(markers);
                                console.log(hashCodeArrayOfMarkers.toString());
                                $rootScope.map.animateCamera({
                                    'target': latLngBounds,
                                    'zoom': 15,
                                    'duration': 1000 // 1 seconds
                                });
                            }
                            marker.addEventListener(plugin.google.maps.event.MARKER_CLICK, function() {
                                var indexOfMarkerClicked = marker.get("index");
                                marker.showInfoWindow();
                                $scope.clickList(indexOfMarkerClicked);
                                marker.showInfoWindow();
                                marker.getPosition(function(latLng) {
                                    $rootScope.map.animateCamera({
                                        'target': latLng,
                                        // 'zoom': 16,
                                        'duration': 400
                                    });
                                });
                            });
                        });
                    }, 0 + (0 * n));
                })(i);
            }
(;i{ (功能(n){ setTimeout(函数(){ var position=new plugin.google.maps.LatLng(结果列表[n]。纬度,结果列表[n]。经度); 推(位); $rootScope.map.addMarker({ “位置”:位置, “标题”:结果列表[n]。名称, “索引”:n, “代码段”:结果列表[n]。地址, “风格”:{ “文本对齐”:“居中”, “字体样式”:“斜体”, “颜色”:“红色” }, disableAutoPan:错误 },功能(标记){ $scope.listResults=resultList; 如果((+n+1)=noOfData){ var latLngBounds=new plugin.google.maps.latLngBounds(markers); log(hashCodeArrayOfMarkers.toString()); $rootScope.map.animateCamera({ “目标”:latLngBounds, “缩放”:15, “持续时间”:1000//1秒 }); } marker.addEventListener(plugin.google.maps.event.marker_单击,函数(){ var indexOfMarkerClicked=marker.get(“索引”); marker.showInfoWindow(); $scope.clickList(indexofmarker单击); marker.showInfoWindow(); 标记器。获取位置(功能(latLng){ $rootScope.map.animateCamera({ “目标”:latLng, //“缩放”:16, “持续时间”:400 }); }); }); }); },0+(0*n)); })(i) ); } 我想从项目点击列表中得到相同的结果。 我可以将相机移动到标记上,因为我有latLng,但我想打开latLng上相同标记的信息窗口。 请帮助我。

科尔多瓦动态标记
    Dynamic Marker in Cordova    


    <!DOCTYPE html>
        <html>
        <head>
            <meta charset="utf-8" />
            <meta name="viewport" content="width=device-width, initial-scale=1">
            <script type="text/javascript" src="cordova.js"></script>
            <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
            <script type="text/javascript">
            var map;

             var data = [];

             var lat,long,snippet,title;

           document.addEventListener("deviceready", function() {

           var xmlhttp = new XMLHttpRequest();
                xmlhttp.onreadystatechange = function() {
                    if (this.readyState == 4 && this.status == 200) {
                       console.log("this.responseText==="+this.responseText);
                       var parse = JSON.parse(this.responseText);

                       var invv = parse.info;

                        console.log("invv=="+invv);

                       var count = invv.length;

                       console.log("count=="+count);

                       var i;

                       for(i = 0 ;i < count ; i++){

                     lat = invv[i].lat;

                      long = invv[i].long;

                       snippet = invv[i].snippet;

                       title = invv[i].title;

                      console.log("title==="+title);

                        data.push({
                      "title" : title,
                      "position": new plugin.google.maps.LatLng(lat,long),

                      });

                       }



                      console.log("data one==="+JSON.stringify(data));

                      sw(JSON.stringify(data));

                    }
                };
                xmlhttp.open("GET", "http://192.168.1.100/tuts_rest/latlong.php", true);
                xmlhttp.send();



          console.log("data two==="+JSON.stringify(data));


          var mapDiv = document.getElementById("map_canvas");

          const GOOGLE = new plugin.google.maps.LatLng(-33.890542, 151.274856);
          var map = plugin.google.maps.Map.getMap(mapDiv, {
            'camera': {
              'latLng': GOOGLE,
              'zoom': 17
            }
          });

        function sw(a){

        map.addEventListener(plugin.google.maps.event.MAP_READY, function() {


            console.log("data==="+a);

             var obj = JSON.parse(a);

             console.log("obj==="+obj);

             var nn = obj.length;

             console.log("nn==="+nn);



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

        addMarkers(obj, function(markers) {
        console.log("a==="+obj);
        console.log("hellooooo");
        console.log(markers[markers.length - 1]);
          markers[markers.length - 1].showInfoWindow();
        });

        }


        function addMarkers(data, callback) {
          var markers = [];
          function onMarkerAdded(marker) {

          console.log("marker==="+JSON.stringify(markers));

            markers.push(marker);
            if (markers.length === data.length) {
              callback(markers);
            }
          }
          data.forEach(function(markerOptions) {
            map.addMarker(markerOptions, onMarkerAdded);
          });

        }
           });



        }



        });

            </script>
        </head>
        <body>
        <h3>PhoneGap-GoogleMaps-Plugin</h3>
        <div style="width:100%;height:400px" id="map_canvas"></div>
        <button id="button">Full Screen</button>
        </body>
        </html>


        JSON Response 

 {"status":1,"info":[{"lat":"-33.890542","long":"151.274856","snippet":"Hello"},{"lat":"-33.923036","long":" 151.259052","snippet":"Hello"}]}


    PHP Code

    <?php
        // Include confi.php
        include_once('config.php');



            $qur = mysql_query("select * from `latlong`");
            $result =array();
            while($r = mysql_fetch_array($qur)){
                extract($r);
                $result[] = array("lat" => $lat, "long" => $long, 'snippet' => $snippet ,'title' => $title); 
            }
            $json = array("status" => 1, "info" => $result);

        @mysql_close($conn);

        /* Output header */
        header('Content-type: application/json');
        echo json_encode($json);
        ?>

    Config.PHP

    <?php
    $conn = mysql_connect("localhost", "root", "");
    mysql_select_db('tuts_rest', $conn);
    ?>
var映射; var数据=[]; 变量lat,long,snippet,title; document.addEventListener(“deviceready”,函数(){ var xmlhttp=new XMLHttpRequest(); xmlhttp.onreadystatechange=函数(){ if(this.readyState==4&&this.status==200){ log(“this.responseText==”+this.responseText); var parse=JSON.parse(this.responseText); var invv=parse.info; console.log(“invv==”+invv); var计数=invv.length; log(“计数=”+计数); var i; 对于(i=0;i