Syed Raza
Syed Raza

Reputation: 149

How To Change Color Of Icon And Poly Line At Run Time By Click

You Have edited script according to v2 i am getting this error on using that script pic attached on line 154

GEvent.addListener(window.polyline, 'click', function() {
                                    window.polyline.setOptions(options: { strokeColor: 'blue' });

You Have edited script according to v2 i am getting this error on using that script pic attached How can we change color of icon and polyline by click on running application? My code is as follows. It has no error. How can I do this?

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

namespace GoogleMap
{
    // A sample project by Ghaffar khan

    public partial class Map : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            DataSet1TableAdapters.LocationsTableAdapter da = new GoogleMap.DataSet1TableAdapters.LocationsTableAdapter();
            DataSet1.LocationsDataTable table = new DataSet1.LocationsDataTable();
            da.Fill(table);
            BuildScript(table);
            //GooglePolyline PL1 = new GooglePolyline();

        }
        private void BuildScript(DataTable tbl)
        {
            String Locations = "";
            foreach (DataRow r in tbl.Rows)
            {
                // bypass empty rows        
                if (r["Latitude"].ToString().Trim().Length == 0)
                    continue;

                string Latitude = r["Latitude"].ToString();
                string Longitude = r["Longitude"].ToString();
                // create a line of JavaScript for marker on map for this record    
                Locations += Environment.NewLine + " map.addOverlay(new GMarker(new GLatLng(" + Latitude + "," + Longitude + ")));";

            }

            // construct the final script
            js.Text = @"<script type='text/javascript'>
                            function initialize() {
                              if (GBrowserIsCompatible()) {
                                var map = new GMap2(document.getElementById('map_canvas'));
                                map.setCenter(new GLatLng(45.05,7.6667), 2); 
                                map.openInfoWindowHtml ( new GLatLng(45.05,7.6667), 'Serif<br>Pakistan');
                                " + Locations + @"
                                map.setUIToDefault();

// Create an array with points  
var points = [  
   new GLatLng(24.85229, 67.01703),  
   new GLatLng(24.914463, 67.0965958),  
   new GLatLng(24.86588, 67.06089),  
new GLatLng(24.9726753, 67.06638),
new GLatLng(24.840023, 67.24285),
new GLatLng(24.85229, 67.01703)
];  

// Create a new polyline  
var polyline = new GPolyline(points, '#ff0000', 5, 0.7);  

// Add the polyline to the map using map.addOverlay()  
map.addOverlay(polyline);
var marker = new GMarker(new GLatLng(45.05,7.6667))  
// 

                              }
                            }


                            </script> ";
        }       

    }
}

//////The Script According to GergL is,///////

           js.Text = @"<script type='text/javascript'>
                            function initialize() {
                              if (GBrowserIsCompatible()) {
                                window.polyline = new GPolyline(points, '#ff0000', 5, 0.7); 
                                var map = new GMap2(document.getElementById('map_canvas'));
                                map.setCenter(new GLatLng(45.05,7.6667), 2); 
                                map.openInfoWindowHtml ( new GLatLng(45.05,7.6667), 'Serif<br>Pakistan');
                                " + Locations + @"
                                map.setUIToDefault();
google.maps.event.addListener(window.polyline, 'click', function() {
    window.polyline.setOptions(options: { strokeColor: 'blue' });
});
// Create an array with points  
var points = [  
   new GLatLng(24.85229, 67.01703),  
   new GLatLng(24.914463, 67.0965958),  
   new GLatLng(24.86588, 67.06089),  
new GLatLng(24.9726753, 67.06638),
new GLatLng(24.840023, 67.24285),
new GLatLng(24.85229, 67.01703)
];  

// Create a new polyline  
var polyline = new GPolyline(points, '#ff0000', 5, 0.7);  

// Add the polyline to the map using map.addOverlay()  
map.addOverlay(polyline);                          
                              }
                            }
google.maps.event.addListener(window.polyline, 'click', function() {
    window.polyline.setOptions(options: { strokeColor: 'blue' });
});
                            </script> ";

But i am getting error .. .Object Expected in line 47 in script where i use click method in that line hopes for your help !

You Have edited script according to v2 i am getting this error on using that script pic attached

Upvotes: 0

Views: 1765

Answers (1)

GregL
GregL

Reputation: 38103

You need to assign your polyline variable in the initialize() function to a globally accessible variable, and then use the setOptions() method on it to set the new colour in your click event handler (in javascript).

e.g. if you changed the line in initialise() from this:

var polyline = new GPolyline(points, '#ff0000', 5, 0.7);  

to this:

window.polyline = new GPolyline(points, '#ff0000', 5, 0.7); 

And then wanted to have it change to blue when clicked, you would add code like:

GEvent.addListener(window.polyline, 'click', function() {
    window.polyline.setOptions(options: { strokeColor: 'blue' });
});

I haven't tested this, btw. But it should help you get on the right track.

EDIT: Here is what I think your script should be:
EDIT 2: Updated to work with API v2, though be aware Google strongly encourages you to migrate to the new V3 on both the V2 documentation page and the V3 documentation page.

js.Text = @"<script type='text/javascript'>
                            function initialize() {
                              if (GBrowserIsCompatible()) {
                                var map = new GMap2(document.getElementById('map_canvas'));
                                map.setCenter(new GLatLng(45.05,7.6667), 2);
                                map.openInfoWindowHtml ( new GLatLng(45.05,7.6667), 'Serif<br>Pakistan');
                                " + Locations + @"
                                map.setUIToDefault();
                                // Create an array with points  
                                var points = [  
                                   new GLatLng(24.85229, 67.01703),  
                                   new GLatLng(24.914463, 67.0965958),  
                                   new GLatLng(24.86588, 67.06089),  
                                   new GLatLng(24.9726753, 67.06638),
                                   new GLatLng(24.840023, 67.24285),
                                   new GLatLng(24.85229, 67.01703)
                                ];  

                                // Create a new polyline  
                                window.polyline = new GPolyline(points, '#ff0000', 5, 0.7);  
                                GEvent.addListener(window.polyline, 'click', function() {
                                    window.polyline.setOptions(options: { strokeColor: 'blue' });
                                });
                                // Add the polyline to the map using map.addOverlay()  
                                map.addOverlay(window.polyline);                          
                              }
                            }
                        </script> ";

Upvotes: 1

Related Questions