Select to view content in your preferred language

Zoom TO option not enabled when Mouse over

2656
2
Jump to solution
10-04-2015 09:01 AM
JulieBiju
Deactivated User

Hi all,

I tried to add mouseout and mouseover event n GraphicLayer. It is success but  zoom to option in infotemplate not able to see.

If I click on the Graphic thereafter  Zoom to option will work.Where I am wrong?

Pls see below

<!DOCTYPE html>

<html>

<head>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

  <!--The viewport meta tag is used to improve the presentation and behavior

    of the samples on iOS devices-->

  <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no">

  <title>Basemap Gallery - Bing Maps</title>

  <link rel="stylesheet" href="http://js.arcgis.com/3.14/dijit/themes/claro/claro.css">

  <link rel="stylesheet" href="http://js.arcgis.com/3.14/esri/css/esri.css">

  <style type="text/css">

    html,

    body,

    #mapDiv {

      padding: 0;

      margin: 0;

      height: 100%;

      z-index: -1;

      -moz-border-radius: 4px;

      overflow: hidden;

    }

    .claro .dijitButtonText {

      color: #03c;

      font-family: Arial, Helvetica, sans-serif font-weight: bold;

    }

    .claro td.dijitMenuItemLabel {

      color: #03c;

      font-family: Arial, Helvetica, sans-serif font-weight: 500;

    }

    .esriPopup .titlePane {

         background-color: black;

         border-bottom: 1px solid #121310;

         font-weight: bold;

      }

    .esriPopup .contentPane {

         color: whitesmoke;

          background-color: #496277 !important;

          font-weight: bold;

    }

    .esriPopup .pointer,

    .esriPopup .outerPointer { 

    background-color: #496277 !important; 

    } 

    .esriPopup a {

         color: black;

      }

      .esriPopup .actionsPane

      {

         background-color: #B3B3B3;

      }

    .auto-style1 {}

    .auto-style2 {

      height: 20px;

    }

    .auto-style3 {

      height: 20px;

    }

    .auto-style6 {

      height: 2%;

      width: 279px;

    }

    .auto-style7 {

      width: 279px;

    }

    #TxtAltareeqEng {

      width: 55px;

    }

    #TxtAltareeqEng0 {

      width: 55px;

    }

  </style>

  <script>

      var dojoConfig = {

          parseOnLoad: false,

          async: true,

          tlmSiblingOfDojo: false,

          packages: [{

              name: "ncam",

              location: location.pathname.replace(/\/[^/]+$/, '') + "/ncam"

          }]

      };

  </script>

  <script type="text/javascript" src="http://js.arcgis.com/3.14/"></script>

  <script type="text/javascript">

      window.onerror = function (msg, url, linenumber) {

          alert('Error message: ' + msg + '\nURL: ' + url + '\nLine Number: ' + linenumber);

          return true;

      }

      var map, basemapGallery, loading;

      require([

          "esri/map",

          "esri/graphic",

          "esri/layers/ArcGISDynamicMapServiceLayer",

          "esri/layers/GraphicsLayer",

          "esri/geometry/Extent",

          "esri/geometry/Point",

          "esri/geometry/Polyline",

          "esri/SpatialReference",

          "esri/symbols/PictureMarkerSymbol",

          "esri/symbols/SimpleLineSymbol",

          "esri/InfoTemplate",

          "esri/dijit/Basemap",

          "esri/dijit/BasemapGallery",

          "esri/dijit/BasemapLayer",

          "esri/graphicsUtils",

          "esri/domUtils",

          "dojo/_base/array",

          "dojo/parser",

          "dojo/dom",

          "dojo/_base/lang",

          "dijit/MenuItem",

          "dijit/registry",

          "ncam/DirectionalLineSymbol",

          "dijit/Menu",

          "dijit/layout/ContentPane",

          "dijit/form/Button",

          "dijit/form/RadioButton",

          "dijit/form/DropDownButton",

          "dojo/domReady!"

      ],

        function (

          Map,

          Graphic,

          ArcGISDynamicMapServiceLayer,

          GraphicsLayer,

          Extent,

          Point,

          Polyline,

          SpatialReference,

          PictureMarkerSymbol,

          SimpleLineSymbol,

          InfoTemplate,

          Basemap,

          BasemapGallery,

          BasemapLayer,

          graphicsUtils,

          domUtils,

          array,

          parser,

          dom,

          lang,

          MenuItem,

          registry,

          DirectionalLineSymbol

        ) {

            parser.parse();

            var TareeqENG, TareeqARB;

            var graphicsLayer, pointGraphic;

            var AltareeqArb, AltareeqEng;

            loading = dom.byId("loadingImg");  //loading image. id

            map = new Map("mapDiv", {

                center: [6.389, 36.054],

                zoom: 4,

                basemap: 'topo'

            });

            map.on("update-start", showLoading);

            map.on("update-end", hideLoading);

            map.on('load', function () {

                createBasemapGallery();

            });

            registry.byId("radioOne").on("change", function (isChecked) {

                if (isChecked) {

                    registry.byId("LnkLastPosition").set("label", "LastPosition");

                    registry.byId("LnkTracking").set("label", "Tracking");

                }

            }, true);

            registry.byId("radioTwo").on("change", function (isChecked) {

                if (isChecked) {

                    registry.byId("LnkLastPosition").set("label", "الموقف الأخير");

                    registry.byId("LnkTracking").set("label", "التتبع");

                }

            }, true);

            registry.byId("LnkLastPosition").on("click", LastPosClick);

            registry.byId("LnkTracking").on("click", LastPosClick);

            function showLoading() {

                domUtils.show(loading);

                map.disableMapNavigation();

                map.hideZoomSlider();

            }

            function hideLoading(error) {

                domUtils.hide(loading);

                map.enableMapNavigation();

                map.showZoomSlider();

            }

            function createBasemapGallery() {

                AltareeqEng = "http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Population_World/MapSer...";

                AltareeqArb = "http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer";

                //Manually create a list of basemaps to display

                var basemaps = [];

                TareeqENG = new Basemap({

                    layers: [new ArcGISDynamicMapServiceLayer(AltareeqEng)],

                    id: "TareeqENG",

                    title: "Al-Tareeq(ENG)"

                });

                basemaps.push(TareeqENG);

                TareeqARB = new Basemap({

                    layers: [new ArcGISDynamicMapServiceLayer(AltareeqArb)],

                    id: "TareeqARB",

                    title: "Al-Tareeq(AR)"

                });

                basemaps.push(TareeqARB);

                BingMapsRoad = new Basemap({

                    layers: [new BasemapLayer({

                        type: "BingMapsRoad"

                    })],

                    id: "bmRoad",

                    title: "BingMaps-Road"

                });

                basemaps.push(BingMapsRoad);

                BingMapsAerial = new Basemap({

                    layers: [new BasemapLayer({

                        type: "BingMapsAerial"

                    })],

                    id: "bmAerial",

                    title: "BingMaps-Aerial"

                });

                basemaps.push(BingMapsAerial);

                BingMapsHybrid = new Basemap({

                    layers: [new BasemapLayer({

                        type: "BingMapsHybrid"

                    })],

                    id: "bmHybrid",

                    title: "BingMaps-Aerial-Labels"

                });

                basemaps.push(BingMapsHybrid);

                basemapGallery = new BasemapGallery({

                    showArcGISBasemaps: false,

                    basemaps: basemaps,

                    bingMapsKey: "<Bing Key>",

                    map: map

                });

                basemapGallery.startup();

                graphicsLayer = new GraphicsLayer();

                map.addLayer(graphicsLayer);

                graphicsLayer.on("mouse-over", function (event) {

                    map.graphics.clear();  //use the maps graphics layer as the highlight layer

                    var graphic = event.graphic;

                    map.infoWindow.setContent(graphic.getContent());

                    map.infoWindow.setTitle(graphic.getTitle());

                    var highlightGraphic = new Graphic(graphic.geometry, pointGraphic);

                    map.graphics.add(highlightGraphic);

                    map.infoWindow.show(event.screenPoint, InfoTemplate());

                });

                graphicsLayer.on("mouse-out", function () {

                    map.graphics.clear();

                    map.infoWindow.hide();

                });

                //BasemapGallery.startup isn't needed because we aren't using the default basemap, instead

                //we are going to create a custom user interface to display the basemaps, in this case a menu.

                array.forEach(basemapGallery.basemaps, function (basemap) {

                    //Add a menu item for each basemap, when the menu items are selected

                    registry.byId("bingMenu").addChild(new MenuItem({

                        label: basemap.title,

                        onClick: lang.hitch(this, function () {

                            this.basemapGallery.select(basemap.id);

                        })

                    }));

                });

                /*Select that basemap that you want to be initially displayed*/

                basemapGallery.select(TareeqENG.id);

            }

            function LastPosClick() {

                map.infoWindow.hide();

                var colourstyle = "images/sphere-blue-dark-16x16.png"

                var Status = "status";

                var procname = "procname";

                var location = "location";

                var Driver = "Drv";

                var strhotspot = "strhotspot";

                var geomPoint1 = new Point(58.46236, 23.61581);

                var geomPoint2 = new Point(59.46236, 23.61581);

                var geomPoint3 = new Point(60.43362666666, 23.583081666666);

                var polyline = new Polyline(new SpatialReference(4326));

                polyline.addPath([geomPoint1, geomPoint2, geomPoint3]);

                var symbol = new PictureMarkerSymbol({

                    "url": colourstyle,

                    "height": 16,

                    "width": 16,

                    "type": "esriPMS"

                });

                //add a basic polyline

                var basicOptions = {

                    style: SimpleLineSymbol.STYLE_SOLID,

                    color: new dojo.Color([0, 0, 0]),

                    width: 2,

                    directionScale: 0.8,

                    directionStyle: "arrow3",

                    directionPixelBuffer: 80

                };

                var basicSymbol = new DirectionalLineSymbol(basicOptions);

                var infoTemplate = new InfoTemplate();

                infoTemplate.content = strhotspot;

                var pointGraphic = new Graphic(geomPoint1, symbol);

                var pointGraphic2 = new Graphic(geomPoint2, symbol);

                var pointGraphic3 = new Graphic(geomPoint3, symbol);

                var lineGraphic = new Graphic(polyline, basicSymbol);

                pointGraphic.setInfoTemplate(infoTemplate);

                pointGraphic2.setInfoTemplate(infoTemplate);

                pointGraphic3.setInfoTemplate(infoTemplate);

                graphicsLayer.add(pointGraphic);

                graphicsLayer.add(pointGraphic2);

                graphicsLayer.add(pointGraphic3);

                graphicsLayer.add(lineGraphic);

                setextent();

                var DivesriLogoImage = dom.byId('DivesriLogoImage');

                var mapDiv = dom.byId('mapDiv');

                mapDiv.style.visibility = "visible";

                DivesriLogoImage.style.visibility = "hidden";

            }

            function setextent() {

                var gextent = graphicsUtils.graphicsExtent(graphicsLayer.graphics).expand(1.2);

                map.setExtent(gextent);

            }

        });

  </script>

</head>

<body class="claro">

  <form id="form1" >

    <div style="width: 100%; height: 100%">

      <table id="Tablecontrols0" style="font-size: 15px; z-index: 101; background-color: #5B748B; width: 100%; height: 100%;">

        <tr style="font-family: Times New Roman">

          <td style="border-style: none; background-color: #496277; " valign="top" class="auto-style6">

            <input type="radio" data-dojo-type="dijit/form/RadioButton" name="uilanguage" id="radioOne" checked value="English"/><label for="radioOne">English</label><br />

            <input type="radio" data-dojo-type="dijit/form/RadioButton" name="uilanguage" id="radioTwo" value="العربية"/><label for="radioTwo">العربية</label>

          </td>

          <td align="left" style="border-style: none; background-color: #496277; height: 2%;" valign="top" class="auto-style3">

          </td>

        </tr>

        <tr style="font-family: Times New Roman">

          <td style="border-style: none;" valign="top" bgcolor="#496277" class="auto-style7">

            <table id="Tablecontrols" style="border-color: #F2F0EE; font-size: 15px; z-index: 101;

            background-color: #496277; width:auto; height: 274px; font-family: verdana; color: tomato; font-weight: bold; border-top-style: none;" align="left">

              <tr style="font-family: Times New Roman">

                <td rowspan="1" valign="top" height="10px" class="auto-style1">

                </td>

                <td rowspan="1" style="border-style: none;" valign="top" height="10px">

                </td>

              </tr>

              <tr style="font-family: Times New Roman">

                <td rowspan="1" style="font-weight: bold; " valign="top" height="10px" class="auto-style1">

                </td>

                <td rowspan="1" style="border-style: none;" valign="top" height="10px">

                </td>

              </tr>

              <tr style="font-family: Times New Roman">

                <td style="font-weight: bold; " valign="top" height="10" class="auto-style1" colspan="2">

                </td>

              </tr>

              <tr style="font-family: Times New Roman">

                <td style="font-weight: bold; text-align: center; " valign="top" class="auto-style2">

                  <button dojotype="dijit/form/Button" id="LnkLastPosition" style="font-family: Arial; font-size: x-small; font-weight: normal">

                    Last Position</button>

                </td>

                <td style="border-style: none; text-align: center;" valign="top" class="auto-style3">

                  <button dojotype="dijit/form/Button" id="LnkTracking" style="font-family: Arial; font-size: x-small; font-weight: normal">

                    Tracking</button>

                </td>

              </tr>

              <tr style="font-family: Times New Roman">

                <td colspan="2" rowspan="1" style="border-top: 2px solid #547289; border-bottom: 2px solid #547289; font-weight: bold;  position: static;

                    height: 100%; text-align: left; width: 30%; border-left-width: 2px; border-right-width: 2px;" valign="top" align="left">

                  <div id="Something"></div>

                  <div style="width: 300px; height: 356px; overflow: scroll"></div>

                </td>

              </tr>

            </table>

          </td>

          <td style="border-style: none; background-color: white;  width: 100%; height:100%;" valign="top" id="td11">

            <div id="mapDiv"  dojotype="dijit/layout/ContentPane" region="center" style="border:1px solid #000; visibility: visible; height: 100%;">

              <img id="loadingImg" src="images/rotating globe 1.gif"

                   style="position:absolute; right:512px; top:277px; z-index:100; width: 40px; height: 40px;" />

              <div style="position:absolute; right:50px; top:100px; z-Index:99;">

                <button id="dropdownButton" label="Basemaps" data-dojo-type="dijit/form/DropDownButton">

                  <div data-dojo-type="dijit/Menu" id="bingMenu">

                    <!--The menu items are dynamically created using the basemap gallery layers-->

                  </div>

                </button>

              </div>

            </div>

            <div id="DivesriLogoImage"

                 style="background-color: #FFFFFF; width: 80%; height:99.8%; visibility: hidden; position: absolute; top: 72px;" align="center">

            </div>

          </td>

        </tr>

      </table>

    </div>

  </form>

</body>

</html>

0 Kudos
1 Solution

Accepted Solutions
RobertScheitlin__GISP
MVP Emeritus

Julie,

  It is as simple as using map.infoWindow.setFeatures instead of setContent.

          graphicsLayer.on("mouse-over", function (event) {
            map.graphics.clear();  //use the maps graphics layer as the highlight layer
            var graphic = event.graphic;
            map.infoWindow.setFeatures([graphic]);
            /*map.infoWindow.setContent(graphic.getContent());
            map.infoWindow.setTitle(graphic.getTitle());*/
            var highlightGraphic = new Graphic(graphic.geometry, graphic);
            map.graphics.add(highlightGraphic);
            map.infoWindow.show(event.screenPoint, InfoTemplate());
          });

View solution in original post

2 Replies
RobertScheitlin__GISP
MVP Emeritus

Julie,

  It is as simple as using map.infoWindow.setFeatures instead of setContent.

          graphicsLayer.on("mouse-over", function (event) {
            map.graphics.clear();  //use the maps graphics layer as the highlight layer
            var graphic = event.graphic;
            map.infoWindow.setFeatures([graphic]);
            /*map.infoWindow.setContent(graphic.getContent());
            map.infoWindow.setTitle(graphic.getTitle());*/
            var highlightGraphic = new Graphic(graphic.geometry, graphic);
            map.graphics.add(highlightGraphic);
            map.infoWindow.show(event.screenPoint, InfoTemplate());
          });
JulieBiju
Deactivated User

Dear Robert,

Working perfect.

0 Kudos