{"action":"created","comment":{"url":"https://api.github.com/repos/OpenGeoscience/geojs/pulls/comments/50832527","id":50832527,"diff_hunk":"@@ -64,6 +69,12 @@ geo.map = function (arg) {\n     return new geo.map(arg);\n   }\n   arg = arg || {};\n+\n+  if (arg.node === undefined || arg.node === null) {\n+    console.warn('map creation requires a node');","path":"src/core/map.js","position":25,"original_position":25,"commit_id":"57ed2535ef3de61142e21649c833f9f67551f9bf","original_commit_id":"57ed2535ef3de61142e21649c833f9f67551f9bf","user":{"login":"manthey","id":8781639,"avatar_url":"https://avatars.githubusercontent.com/u/8781639?v=3","gravatar_id":"","url":"https://api.github.com/users/manthey","html_url":"https://github.com/manthey","followers_url":"https://api.github.com/users/manthey/followers","following_url":"https://api.github.com/users/manthey/following{/other_user}","gists_url":"https://api.github.com/users/manthey/gists{/gist_id}","starred_url":"https://api.github.com/users/manthey/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/manthey/subscriptions","organizations_url":"https://api.github.com/users/manthey/orgs","repos_url":"https://api.github.com/users/manthey/repos","events_url":"https://api.github.com/users/manthey/events{/privacy}","received_events_url":"https://api.github.com/users/manthey/received_events","type":"User","site_admin":false},"body":"In most of geojs we issue warnings and not errors.  We can change it if you like (in which case, perhaps we should revisit the other warnings, too).","created_at":"2016-01-26T13:14:32Z","updated_at":"2016-01-26T13:14:32Z","html_url":"https://github.com/OpenGeoscience/geojs/pull/516#discussion_r50832527","pull_request_url":"https://api.github.com/repos/OpenGeoscience/geojs/pulls/516","_links":{"self":{"href":"https://api.github.com/repos/OpenGeoscience/geojs/pulls/comments/50832527"},"html":{"href":"https://github.com/OpenGeoscience/geojs/pull/516#discussion_r50832527"},"pull_request":{"href":"https://api.github.com/repos/OpenGeoscience/geojs/pulls/516"}}},"pull_request":{"url":"https://api.github.com/repos/OpenGeoscience/geojs/pulls/516","id":56930880,"html_url":"https://github.com/OpenGeoscience/geojs/pull/516","diff_url":"https://github.com/OpenGeoscience/geojs/pull/516.diff","patch_url":"https://github.com/OpenGeoscience/geojs/pull/516.patch","issue_url":"https://api.github.com/repos/OpenGeoscience/geojs/issues/516","number":516,"state":"open","locked":false,"title":"Map rotation","user":{"login":"manthey","id":8781639,"avatar_url":"https://avatars.githubusercontent.com/u/8781639?v=3","gravatar_id":"","url":"https://api.github.com/users/manthey","html_url":"https://github.com/manthey","followers_url":"https://api.github.com/users/manthey/followers","following_url":"https://api.github.com/users/manthey/following{/other_user}","gists_url":"https://api.github.com/users/manthey/gists{/gist_id}","starred_url":"https://api.github.com/users/manthey/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/manthey/subscriptions","organizations_url":"https://api.github.com/users/manthey/orgs","repos_url":"https://api.github.com/users/manthey/repos","events_url":"https://api.github.com/users/manthey/events{/privacy}","received_events_url":"https://api.github.com/users/manthey/received_events","type":"User","site_admin":false},"body":"Maps now have a rotation property (default=0).  The tiles that are fetched are the covering rectangle of tiles.  This could be optimized so that only tiles that have a portion on the display would be fetched (though calculating that would be more costly).  Rotations work on all renderers.\r\n\r\nAdded rotation interactions.  By default ctrl+left mouse button will rotation around the center of the map by the angle that the mouse cursor moves around the center of the map.  Ctrl+wheel will rotate in 5 degree increments (strictly, one zoom level wheel movement is the same amount of wheel movement that rotates 6 degrees).\r\n\r\nAdjust bounding box to handle clamping when rotated.  This will always let you see the entire map or image, but isn't as intuitive as it could be from a UI standpoint.  Perhaps this should be refactored in a later PR.\r\n\r\nFixed issues with map.bounds and map.zoomAndCenterFromBounds not returning data in the specified gcs (but always in the map gcs).\r\n\r\nTiles in the gl renderer will be pixel-perfect at integer zoom levels for rotations that are multiples of 90 degrees.\r\n\r\nRemoved the minX, minY, maxX, maxY parameters from the tileLayer and osmLayer classes, as they were not used.\r\n\r\nStopped examples from trying to load a favicon (this can be changed if we ever have a favicon, I was just tired of the 404 errors on it).\r\n\r\nStop allowing text selections in the examples.  When dragging maps, selecting text looks bad.\r\n\r\nAdded a \"Spin to Budapest\" option to the transitions example.\r\n\r\nUpdated the tiles example to allow setting the maxBounds and unitsPerPixel in the query arguments.  Added allowRotation to both the controls and the query arguments.  Changed how debug borders are drawn in the null renderer on the tiles example.\r\n\r\nOne of the added tests compares the null renderer with the d3 renderer.  Due to some wackiness in the phantom svg renderer, this only works at 0 and 180 degree rotations.\r\n\r\nFixed some css issues if the browser has odd line-height and font-size behavior (this affected the null renderer's tile sizes in phantom).\r\n\r\nRemoved vestigial references to map.toggle(), as it couldn't have ever worked, and any caller with enough information to use it could have toggle a layer's visibility on their own.\r\n\r\nFor transitions, deeply copy the options so that we aren't altering a data structure the caller may still be using.\r\n\r\nRenamed defaultOpts to opts in a lot of the transition code, as it references the specific options and not the defaults.\r\n\r\nActually attach the geo.event.cancelAnimation and geo.event.cancelNavigation functionality in transitions.\r\n\r\nAdded tests that cover most of map.js (besides also covering most of the new code).  Added a selenium test for rotation that needs a new base-line image.","created_at":"2016-01-22T19:30:53Z","updated_at":"2016-01-26T13:14:32Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e73ebb750aa2481242d58d111f874af6bdcc0992","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/OpenGeoscience/geojs/pulls/516/commits","review_comments_url":"https://api.github.com/repos/OpenGeoscience/geojs/pulls/516/comments","review_comment_url":"https://api.github.com/repos/OpenGeoscience/geojs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/OpenGeoscience/geojs/issues/516/comments","statuses_url":"https://api.github.com/repos/OpenGeoscience/geojs/statuses/57ed2535ef3de61142e21649c833f9f67551f9bf","head":{"label":"OpenGeoscience:map-rotation","ref":"map-rotation","sha":"57ed2535ef3de61142e21649c833f9f67551f9bf","user":{"login":"OpenGeoscience","id":3434706,"avatar_url":"https://avatars.githubusercontent.com/u/3434706?v=3","gravatar_id":"","url":"https://api.github.com/users/OpenGeoscience","html_url":"https://github.com/OpenGeoscience","followers_url":"https://api.github.com/users/OpenGeoscience/followers","following_url":"https://api.github.com/users/OpenGeoscience/following{/other_user}","gists_url":"https://api.github.com/users/OpenGeoscience/gists{/gist_id}","starred_url":"https://api.github.com/users/OpenGeoscience/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OpenGeoscience/subscriptions","organizations_url":"https://api.github.com/users/OpenGeoscience/orgs","repos_url":"https://api.github.com/users/OpenGeoscience/repos","events_url":"https://api.github.com/users/OpenGeoscience/events{/privacy}","received_events_url":"https://api.github.com/users/OpenGeoscience/received_events","type":"Organization","site_admin":false},"repo":{"id":12960038,"name":"geojs","full_name":"OpenGeoscience/geojs","owner":{"login":"OpenGeoscience","id":3434706,"avatar_url":"https://avatars.githubusercontent.com/u/3434706?v=3","gravatar_id":"","url":"https://api.github.com/users/OpenGeoscience","html_url":"https://github.com/OpenGeoscience","followers_url":"https://api.github.com/users/OpenGeoscience/followers","following_url":"https://api.github.com/users/OpenGeoscience/following{/other_user}","gists_url":"https://api.github.com/users/OpenGeoscience/gists{/gist_id}","starred_url":"https://api.github.com/users/OpenGeoscience/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OpenGeoscience/subscriptions","organizations_url":"https://api.github.com/users/OpenGeoscience/orgs","repos_url":"https://api.github.com/users/OpenGeoscience/repos","events_url":"https://api.github.com/users/OpenGeoscience/events{/privacy}","received_events_url":"https://api.github.com/users/OpenGeoscience/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/OpenGeoscience/geojs","description":"High performance visualization and analysis for geospatial and biomedical domain","fork":false,"url":"https://api.github.com/repos/OpenGeoscience/geojs","forks_url":"https://api.github.com/repos/OpenGeoscience/geojs/forks","keys_url":"https://api.github.com/repos/OpenGeoscience/geojs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/OpenGeoscience/geojs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/OpenGeoscience/geojs/teams","hooks_url":"https://api.github.com/repos/OpenGeoscience/geojs/hooks","issue_events_url":"https://api.github.com/repos/OpenGeoscience/geojs/issues/events{/number}","events_url":"https://api.github.com/repos/OpenGeoscience/geojs/events","assignees_url":"https://api.github.com/repos/OpenGeoscience/geojs/assignees{/user}","branches_url":"https://api.github.com/repos/OpenGeoscience/geojs/branches{/branch}","tags_url":"https://api.github.com/repos/OpenGeoscience/geojs/tags","blobs_url":"https://api.github.com/repos/OpenGeoscience/geojs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/OpenGeoscience/geojs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/OpenGeoscience/geojs/git/refs{/sha}","trees_url":"https://api.github.com/repos/OpenGeoscience/geojs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/OpenGeoscience/geojs/statuses/{sha}","languages_url":"https://api.github.com/repos/OpenGeoscience/geojs/languages","stargazers_url":"https://api.github.com/repos/OpenGeoscience/geojs/stargazers","contributors_url":"https://api.github.com/repos/OpenGeoscience/geojs/contributors","subscribers_url":"https://api.github.com/repos/OpenGeoscience/geojs/subscribers","subscription_url":"https://api.github.com/repos/OpenGeoscience/geojs/subscription","commits_url":"https://api.github.com/repos/OpenGeoscience/geojs/commits{/sha}","git_commits_url":"https://api.github.com/repos/OpenGeoscience/geojs/git/commits{/sha}","comments_url":"https://api.github.com/repos/OpenGeoscience/geojs/comments{/number}","issue_comment_url":"https://api.github.com/repos/OpenGeoscience/geojs/issues/comments{/number}","contents_url":"https://api.github.com/repos/OpenGeoscience/geojs/contents/{+path}","compare_url":"https://api.github.com/repos/OpenGeoscience/geojs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/OpenGeoscience/geojs/merges","archive_url":"https://api.github.com/repos/OpenGeoscience/geojs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/OpenGeoscience/geojs/downloads","issues_url":"https://api.github.com/repos/OpenGeoscience/geojs/issues{/number}","pulls_url":"https://api.github.com/repos/OpenGeoscience/geojs/pulls{/number}","milestones_url":"https://api.github.com/repos/OpenGeoscience/geojs/milestones{/number}","notifications_url":"https://api.github.com/repos/OpenGeoscience/geojs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/OpenGeoscience/geojs/labels{/name}","releases_url":"https://api.github.com/repos/OpenGeoscience/geojs/releases{/id}","deployments_url":"https://api.github.com/repos/OpenGeoscience/geojs/deployments","created_at":"2013-09-19T21:39:25Z","updated_at":"2016-01-18T22:50:20Z","pushed_at":"2016-01-25T16:21:44Z","git_url":"git://github.com/OpenGeoscience/geojs.git","ssh_url":"git@github.com:OpenGeoscience/geojs.git","clone_url":"https://github.com/OpenGeoscience/geojs.git","svn_url":"https://github.com/OpenGeoscience/geojs","homepage":"","size":19550,"stargazers_count":43,"watchers_count":43,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":16,"mirror_url":null,"open_issues_count":75,"forks":16,"open_issues":75,"watchers":43,"default_branch":"master"}},"base":{"label":"OpenGeoscience:master","ref":"master","sha":"08c0606313607042edbd48a97af11d4f370b63fb","user":{"login":"OpenGeoscience","id":3434706,"avatar_url":"https://avatars.githubusercontent.com/u/3434706?v=3","gravatar_id":"","url":"https://api.github.com/users/OpenGeoscience","html_url":"https://github.com/OpenGeoscience","followers_url":"https://api.github.com/users/OpenGeoscience/followers","following_url":"https://api.github.com/users/OpenGeoscience/following{/other_user}","gists_url":"https://api.github.com/users/OpenGeoscience/gists{/gist_id}","starred_url":"https://api.github.com/users/OpenGeoscience/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OpenGeoscience/subscriptions","organizations_url":"https://api.github.com/users/OpenGeoscience/orgs","repos_url":"https://api.github.com/users/OpenGeoscience/repos","events_url":"https://api.github.com/users/OpenGeoscience/events{/privacy}","received_events_url":"https://api.github.com/users/OpenGeoscience/received_events","type":"Organization","site_admin":false},"repo":{"id":12960038,"name":"geojs","full_name":"OpenGeoscience/geojs","owner":{"login":"OpenGeoscience","id":3434706,"avatar_url":"https://avatars.githubusercontent.com/u/3434706?v=3","gravatar_id":"","url":"https://api.github.com/users/OpenGeoscience","html_url":"https://github.com/OpenGeoscience","followers_url":"https://api.github.com/users/OpenGeoscience/followers","following_url":"https://api.github.com/users/OpenGeoscience/following{/other_user}","gists_url":"https://api.github.com/users/OpenGeoscience/gists{/gist_id}","starred_url":"https://api.github.com/users/OpenGeoscience/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OpenGeoscience/subscriptions","organizations_url":"https://api.github.com/users/OpenGeoscience/orgs","repos_url":"https://api.github.com/users/OpenGeoscience/repos","events_url":"https://api.github.com/users/OpenGeoscience/events{/privacy}","received_events_url":"https://api.github.com/users/OpenGeoscience/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/OpenGeoscience/geojs","description":"High performance visualization and analysis for geospatial and biomedical domain","fork":false,"url":"https://api.github.com/repos/OpenGeoscience/geojs","forks_url":"https://api.github.com/repos/OpenGeoscience/geojs/forks","keys_url":"https://api.github.com/repos/OpenGeoscience/geojs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/OpenGeoscience/geojs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/OpenGeoscience/geojs/teams","hooks_url":"https://api.github.com/repos/OpenGeoscience/geojs/hooks","issue_events_url":"https://api.github.com/repos/OpenGeoscience/geojs/issues/events{/number}","events_url":"https://api.github.com/repos/OpenGeoscience/geojs/events","assignees_url":"https://api.github.com/repos/OpenGeoscience/geojs/assignees{/user}","branches_url":"https://api.github.com/repos/OpenGeoscience/geojs/branches{/branch}","tags_url":"https://api.github.com/repos/OpenGeoscience/geojs/tags","blobs_url":"https://api.github.com/repos/OpenGeoscience/geojs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/OpenGeoscience/geojs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/OpenGeoscience/geojs/git/refs{/sha}","trees_url":"https://api.github.com/repos/OpenGeoscience/geojs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/OpenGeoscience/geojs/statuses/{sha}","languages_url":"https://api.github.com/repos/OpenGeoscience/geojs/languages","stargazers_url":"https://api.github.com/repos/OpenGeoscience/geojs/stargazers","contributors_url":"https://api.github.com/repos/OpenGeoscience/geojs/contributors","subscribers_url":"https://api.github.com/repos/OpenGeoscience/geojs/subscribers","subscription_url":"https://api.github.com/repos/OpenGeoscience/geojs/subscription","commits_url":"https://api.github.com/repos/OpenGeoscience/geojs/commits{/sha}","git_commits_url":"https://api.github.com/repos/OpenGeoscience/geojs/git/commits{/sha}","comments_url":"https://api.github.com/repos/OpenGeoscience/geojs/comments{/number}","issue_comment_url":"https://api.github.com/repos/OpenGeoscience/geojs/issues/comments{/number}","contents_url":"https://api.github.com/repos/OpenGeoscience/geojs/contents/{+path}","compare_url":"https://api.github.com/repos/OpenGeoscience/geojs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/OpenGeoscience/geojs/merges","archive_url":"https://api.github.com/repos/OpenGeoscience/geojs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/OpenGeoscience/geojs/downloads","issues_url":"https://api.github.com/repos/OpenGeoscience/geojs/issues{/number}","pulls_url":"https://api.github.com/repos/OpenGeoscience/geojs/pulls{/number}","milestones_url":"https://api.github.com/repos/OpenGeoscience/geojs/milestones{/number}","notifications_url":"https://api.github.com/repos/OpenGeoscience/geojs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/OpenGeoscience/geojs/labels{/name}","releases_url":"https://api.github.com/repos/OpenGeoscience/geojs/releases{/id}","deployments_url":"https://api.github.com/repos/OpenGeoscience/geojs/deployments","created_at":"2013-09-19T21:39:25Z","updated_at":"2016-01-18T22:50:20Z","pushed_at":"2016-01-25T16:21:44Z","git_url":"git://github.com/OpenGeoscience/geojs.git","ssh_url":"git@github.com:OpenGeoscience/geojs.git","clone_url":"https://github.com/OpenGeoscience/geojs.git","svn_url":"https://github.com/OpenGeoscience/geojs","homepage":"","size":19550,"stargazers_count":43,"watchers_count":43,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":16,"mirror_url":null,"open_issues_count":75,"forks":16,"open_issues":75,"watchers":43,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/OpenGeoscience/geojs/pulls/516"},"html":{"href":"https://github.com/OpenGeoscience/geojs/pull/516"},"issue":{"href":"https://api.github.com/repos/OpenGeoscience/geojs/issues/516"},"comments":{"href":"https://api.github.com/repos/OpenGeoscience/geojs/issues/516/comments"},"review_comments":{"href":"https://api.github.com/repos/OpenGeoscience/geojs/pulls/516/comments"},"review_comment":{"href":"https://api.github.com/repos/OpenGeoscience/geojs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/OpenGeoscience/geojs/pulls/516/commits"},"statuses":{"href":"https://api.github.com/repos/OpenGeoscience/geojs/statuses/57ed2535ef3de61142e21649c833f9f67551f9bf"}}}}