1

I'm trying to create a draggable marker with Subgurim and reading the final variables to textboxes.

I've got all working, except the part where I put the coords on a textbox.

The codebehind:

protected void Page_Load(object sender, EventArgs e){
    if (SessionManager.User == null) {
        string strscript  = "<script language=javascript>window.top.close();</script>";
        if(!ClientScript.IsStartupScriptRegistered("clientScript")) {
            ClientScript.RegisterStartupScript(Page.GetType(), "clientScript", strscript);
        }
    }
    else {
        if (!Page.IsPostBack) {                
            gmap.Height = 400;
            gmap.Width = 590;
            gmap.enableDragging = true;
            gmap.Language = "pt";
            gmap.BackColor = Color.White;
            gmap.enableDragging = true;
            gmap.enableGoogleBar = true;

            gmap.Language = "pt";
            gmap.BackColor = Color.White;

            GControl nav = new GControl(GControl.preBuilt.LargeMapControl3D);
            GControl maptypes = new GControl(GControl.preBuilt.MenuMapTypeControl, new GControlPosition(GControlPosition.position.Top_Right));
            GControl scale = new GControl(GControl.preBuilt.ScaleControl, new GControlPosition(GControlPosition.position.Bottom_Left));
            GControl overview = new GControl(GControl.preBuilt.GOverviewMapControl, new GControlPosition(GControlPosition.position.Bottom_Right));

            gmap.addControl(nav);
            gmap.addControl(maptypes);
            gmap.addControl(scale);
            gmap.addControl(overview);

            GLatLng pt=null;
            int zoom = 16;

            string lat = Request.QueryString["lat"];
            string lon = Request.QueryString["lon"];

            if (lon == null || lat == null) {
                pt = new GLatLng(Helper.BASE_LAT, Helper.BASE_LON);
                zoom = Helper.BASE_ZOOM;
            }
            else {
                pt = new GLatLng(Convert.ToDouble(lat), Convert.ToDouble(lon));
            }
            gmap.setCenter(pt,zoom);

            GMarkerOptions mOpts = new GMarkerOptions();
            mOpts.draggable = true;

            GMarker marker = new GMarker(pt,mOpts);
            gmap.addGMarker(marker);

            gmap.addListener(new GListener(marker.ID, GListener.Event.dragend,
                string.Format(@"
                   function(overlay, point)
                   {{
                      var ev = new serverEvent('myDragEnd', {0});
                      ev.addArg({0}.getZoom());
                      ev.addArg(this.getPoint());
                      ev.send();
                   }}
                   ", gmap.GMap_Id)
                )
            );
        }
    }
}

protected string gmap_ServerEvent(object s, GAjaxServerEventOtherArgs e) {    
    switch (e.eventName) {
        case "myDragEnd":
            string zoomLevel = e.eventArgs[0];
            GLatLng point = GAjaxServerEventArgs.latlngFromString(e.eventArgs[1]);
            txtLat.Text = "Hello";//point.lat.ToString();
            txtLon.Text = "There";//point.lng.ToString();
        break;
    }
    return string.Empty;    
}

Basically I am creating a draggable marker and attaching an event to it, which is handled by the last method where the assignment is done... which doesn't happen. The textboxes still show empty.

Marc Climent
  • 9,434
  • 2
  • 50
  • 55
sergio
  • 1,026
  • 2
  • 19
  • 43

1 Answers1

0

when you add the marker

google.maps.event.addListener(marker, 'dragend', markerDrag);

then in header

function markerDrag(evt)
                 {
                    document.getElementById('mlat_').value = this.getPosition().lat();
                    document.getElementById('mlng_').value = this.getPosition().lng();

                 }

where mlat_ and mlng are input type text

stefano
  • 16
  • 1