On Wed, Jan 13, 2016 at 2:02 PM, OmPrakash Muppirala <bigosma...@gmail.com> wrote:
> I took the coordinates from your earlier code and tried it out: > > override protected function createMap():void > { > var mc:MercatorProjection = new MercatorProjection(); > mc.initialize(); > var a:Array = [ > [151.25715360000004, -33.743317043500042 ], > [151.25985827199997,-33.743840223500001 ], > [151.26121619200012, -33.74746011849993 ], > [151.269228, -33.74990100849999 ], > [151.26887100800002, -33.757243991500047], > [ 151.27524460799998, -33.756977721 ], > [ 151.28052790400011,-33.75872719199981 ], > [ 151.27875936, -33.768415808499981 ], > [151.27282256000012, -33.767621917999975 ], > [ 151.27024985600008,-33.77462350199994 ], > [ 151.27552054400007, -33.779516363499738 ], > [151.27530051200017, -33.781854430499834 ], > [ 151.26530544000002,-33.780174667499921 ], > [ 151.26095520000001, -33.777029796999898 ], > [151.259648416, -33.779054695999776 ], > [ 151.25597475200004,-33.779087477999894 ], > [ 151.25556144000006, -33.783829046499761 ], > [151.24337900800003, -33.781951999499825 ], > [ 151.23829500800002,-33.778761008499828 ], > [ 151.23245721600017, -33.762912705999895 ], > [151.23388588800003, -33.754605225500029 ], > [ 151.24911699200015,-33.756704993999904 ], > [ 151.24983971200004, -33.752049450499953 ], > [151.24830732800024, -33.751826433000019 ], > [ 151.24833936000005,-33.748172997499921 ], > [ 151.25159628799997, -33.74994213399998 ], > [151.25054374400008, -33.746457899499944 ], > [ 151.25377328000013,-33.746925597999962 ], > [ 151.25369952000005, -33.74283635799992 ], > [151.25715360000004, -33.743317043500042 ]] > this.graphics.clear(); > this.graphics.lineStyle(2,0xFF0000); > this.graphics.beginFill(0x999999); > for(var i:int = 0; i < a.length-1; i++) > { > var ltlg:Array = a[i]; > var p:Point = new Point(); > p = mc.project(ltlg[0],ltlg[1], p); > this.graphics.lineTo(p.x,p.y); > } > this.graphics.endFill(); > } > > The resultant shape looks pretty much like a straight line, though. > > Are you sure 151.25715360000004, -33.743317043500042 is actually a valid > lat/long co-ordinate? I am not able to plot it on google maps. > > Duh, it is long/lat and not lat/long. So yes, the co-ordinates are valid and can be seen on Google Maps. I will continue to experiment with this when I get some time. Thanks, Om > Thanks, > Om > > > On Wed, Jan 13, 2016 at 1:31 PM, OmPrakash Muppirala <bigosma...@gmail.com > > wrote: > >> Give me the list of lat/long co-ordinates and the end result shape they >> should look like. I will try out a few things and see we can make this >> work. >> >> Thanks, >> Om >> >> On Wed, Jan 13, 2016 at 7:36 AM, OmPrakash Muppirala < >> bigosma...@gmail.com> wrote: >> >>> >>> On Jan 13, 2016 4:36 AM, "Deepak MS" <megharajdee...@gmail.com> wrote: >>> > >>> > Ok. But it isn't converting lat\long values to expected path data >>> > coordinates I believe. >>> >>> What's happening? Can you post the relevant code and output? >>> >>> Thanks, >>> Om >>> >>> > >>> > On Wed, Jan 13, 2016 at 5:37 PM, OmPrakash Muppirala < >>> bigosma...@gmail.com> >>> > wrote: >>> > >>> > > Yes, it is lat and long. Out is the output point which should get >>> updated >>> > > during the projection. >>> > > >>> > > Thanks, >>> > > Om >>> > > On Jan 13, 2016 3:10 AM, "Deepak MS" <megharajdee...@gmail.com> >>> wrote: >>> > > >>> > > > Thanks Om. >>> > > > >>> > > > I tried that library with following code: >>> > > > var mc:MercatorProjection = new MercatorProjection(); >>> > > > for(var i:int = 0; i < a.length; i++) // a here is >>> array of >>> > > > arrays - [ [ 151.25, -33.74 ],[ 151.25, -33.74 ] ......] >>> > > > { >>> > > > var ltlg:Array = a[i]; >>> > > > var p:Point = mc.project(ltlg[0],ltlg[1], new >>> Point()); >>> > > > //p.x will always be same as lat value - 151.25 >>> and p.y >>> > > > will always be NaN >>> > > > >>> > > > } >>> > > > >>> > > > I looked at MercatorProjection.project() method: >>> > > > override public function project(lam:Number, phi:Number, >>> out:Point):Point >>> > > > { >>> > > > if (spherical) { //spherical = false >>> > > > out.x = scaleFactor * lam; //scaleFactor = 1 >>> > > > out.y = scaleFactor * >>> > > Math.log(Math.tan(MapMath.QUARTERPI + >>> > > > 0.5 * phi)); >>> > > > } else { >>> > > > out.x = scaleFactor * lam; >>> > > > out.y = -scaleFactor * Math.log(MapMath.tsfn(phi, >>> > > > Math.sin(phi), e)); >>> > > > } >>> > > > return out; >>> > > > } >>> > > > >>> > > > I'm not sure what Iam, phi and out parameters are. I assumed Iam >>> is lat >>> > > and >>> > > > phi would be lng. out is used to return the value. I don't know >>> why is it >>> > > > an input parameter here as out itself is the return value. >>> > > > >>> > > > Am I passing lat, lng values correctly to project() ? >>> > > > >>> > > > >>> > > > >>> > > > >>> > > > On Wed, Jan 13, 2016 at 1:09 PM, OmPrakash Muppirala < >>> > > bigosma...@gmail.com >>> > > > > >>> > > > wrote: >>> > > > >>> > > > > Moving thread to dev@. Users@ in bcc in case someone else is >>> > > interested >>> > > > > in >>> > > > > this. >>> > > > > >>> > > > > The d in the path node is a stringified set of points which are >>> > > connected >>> > > > > by lines. M is for moveTo, L is for lineTo and Z signifies >>> closing the >>> > > > > path back to the first point. >>> > > > > >>> > > > > Each country (or region) has its own shape which is denoted by >>> the d >>> > > > > string. The series of path objects is sufficient to draw all the >>> > > > countries >>> > > > > using a stroke and a fill. >>> > > > > >>> > > > > Looking at your coordinates, it looks like a closed polygon. >>> > > > > You might want to try to use Mercator projection to project the >>> lat >>> > > long >>> > > > > coordinates to cartesian coordinates. >>> > > > > Here is a very straightforward implementation of this in AS3: >>> > > > > * >>> > > > > >>> > > > >>> > > >>> https://bitbucket.org/gka/as3-proj/src/ec91cdd098a15ab1e2cbf5bbd3a3221a36507685/net/vis4/map/proj/MercatorProjection.as?at=default&fileviewer=file-view-default >>> > > > > < >>> > > > > >>> > > > >>> > > >>> https://bitbucket.org/gka/as3-proj/src/ec91cdd098a15ab1e2cbf5bbd3a3221a36507685/net/vis4/map/proj/MercatorProjection.as?at=default&fileviewer=file-view-default >>> > > > > >* >>> > > > > >>> > > > > Basically for each lat/long co-ordinate in your 'coordinates' >>> array, >>> > > call >>> > > > > MercatorProjection.project(), which should give you a Point >>> object. >>> > > Use >>> > > > > these series of Points to draw a shape, which represents your >>> > > > State/region. >>> > > > > >>> > > > > Do let me know if you need any further help >>> > > > > >>> > > > > Thanks, >>> > > > > Om >>> > > > > On Jan 12, 2016 10:06 PM, "Deepak MS" <megharajdee...@gmail.com> >>> > > wrote: >>> > > > > >>> > > > > > Moving following conversation to this separate thread. >>> > > > > > >>> > > > > > >>> > > > > > >>> > > > > >>> > > > >>> > > >>> http://apache-flex-development.2333347.n4.nabble.com/FlexJS-US-States-Map-example-pure-AS3-td48006.html >>> > > > > > >>> > > > > > Hi Om, >>> > > > > > I had one question. >>> > > > > > I could see the following path in the worldmap.xml file: >>> > > > > > <path fill="#CEE3F5" stroke="#6E6E6E" stroke-width="0.4" >>> id="UM" >>> > > > > > d="M25.4,206.4 L25.4,206.4 L25.3,206.4 L25.4,206.4 Z"> >>> > > > > > <desc> >>> > > > > > <name>United States Minor Outlying Islands</name> >>> > > > > > <labelrank>5</labelrank> >>> > > > > > <country-abbrev>U.S. MOI</country-abbrev> >>> > > > > > <subregion>Seven seas (open ocean)</subregion> >>> > > > > > <region-wb>East Asia & Pacific</region-wb> >>> > > > > > <iso-a3>UMI</iso-a3> >>> > > > > > <iso-a2>UM</iso-a2> >>> > > > > > <woe-id>28289407</woe-id> >>> > > > > > <continent>North America</continent> >>> > > > > > <hc-middle-x>0.57</hc-middle-x> >>> > > > > > <hc-middle-y>0.58</hc-middle-y> >>> > > > > > <hc-key>um</hc-key> >>> > > > > > <hc-a2>UM</hc-a2> >>> > > > > > </desc> >>> > > > > > </path> >>> > > > > > >>> > > > > > What is the path data in there? >>> > > > > > >>> > > > > > I would be getting the boundary data in form of geojson which >>> would >>> > > > have >>> > > > > > latitude\longitude points. Something like this: >>> > > > > > >>> > > > > > { "type": "Feature", "properties": { "BrickCode_": "21000", >>> "State": >>> > > > > "NSW", >>> > > > > > "ML_Code": "ML108" }, "geometry": { "type": "Polygon", >>> > > "coordinates": [ >>> > > > > [ [ >>> > > > > > 151.25715360000004, -33.743317043500042 ], [ >>> 151.25985827199997, >>> > > > > > -33.743840223500001 ], [ 151.26121619200012, >>> -33.74746011849993 ], [ >>> > > > > > 151.269228, -33.74990100849999 ], [ 151.26887100800002, >>> > > > > -33.757243991500047 >>> > > > > > ], [ 151.27524460799998, -33.756977721 ], [ 151.28052790400011, >>> > > > > > -33.75872719199981 ], [ 151.27875936, -33.768415808499981 ], [ >>> > > > > > 151.27282256000012, -33.767621917999975 ], [ >>> 151.27024985600008, >>> > > > > > -33.77462350199994 ], [ 151.27552054400007, >>> -33.779516363499738 ], [ >>> > > > > > 151.27530051200017, -33.781854430499834 ], [ >>> 151.26530544000002, >>> > > > > > -33.780174667499921 ], [ 151.26095520000001, >>> -33.777029796999898 ], [ >>> > > > > > 151.259648416, -33.779054695999776 ], [ 151.25597475200004, >>> > > > > > -33.779087477999894 ], [ 151.25556144000006, >>> -33.783829046499761 ], [ >>> > > > > > 151.24337900800003, -33.781951999499825 ], [ >>> 151.23829500800002, >>> > > > > > -33.778761008499828 ], [ 151.23245721600017, >>> -33.762912705999895 ], [ >>> > > > > > 151.23388588800003, -33.754605225500029 ], [ >>> 151.24911699200015, >>> > > > > > -33.756704993999904 ], [ 151.24983971200004, >>> -33.752049450499953 ], [ >>> > > > > > 151.24830732800024, -33.751826433000019 ], [ >>> 151.24833936000005, >>> > > > > > -33.748172997499921 ], [ 151.25159628799997, >>> -33.74994213399998 ], [ >>> > > > > > 151.25054374400008, -33.746457899499944 ], [ >>> 151.25377328000013, >>> > > > > > -33.746925597999962 ], [ 151.25369952000005, >>> -33.74283635799992 ], [ >>> > > > > > 151.25715360000004, -33.743317043500042 ] ] ] } } >>> > > > > > >>> > > > > > I'm sure that we cannot use lat\lng points directly in path >>> data. >>> > > But I >>> > > > > > want to know based on what can we convert these data points to >>> path >>> > > > data. >>> > > > > > >>> > > > > >>> > > > >>> > > >>> >> >> >