From 3ded98ba93d0aab3bf5fec102b967cdace1dc590 Mon Sep 17 00:00:00 2001 From: Vasiliy Kuzmenko Date: Wed, 16 Mar 2016 01:06:55 +0500 Subject: [PATCH 1/8] Add ArcGis geocoding service --- src/geocoders/acrgis | 83 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 src/geocoders/acrgis diff --git a/src/geocoders/acrgis b/src/geocoders/acrgis new file mode 100644 index 00000000..0e9a1745 --- /dev/null +++ b/src/geocoders/acrgis @@ -0,0 +1,83 @@ +var L = require('leaflet'), + Util = require('../util'); + +module.exports = { + class: L.Class.extend({ + options: { + service_url: 'http://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer' + }, + + initialize: function(accessToken, options) { + L.setOptions(this, options); + this._accessToken = accessToken; + }, + + geocode: function(query, cb, context) { + var params = { + SingleLine: query, + outFields: 'Addr_Type', + forStorage: false, + maxLocations: 10, + f: 'json' + }; + + if (this._key && this._key.length) { + params.token = this._key; + } + + Util.getJSON(this.options.service_url + '/findAddressCandidates', params, function(data) { + var results = [], + loc, + latLng, + latLngBounds; + + if (data.candidates && data.candidates.length { + for (var i = 0; i <= data.candidates.length - 1; i++) { + loc = data.candidates[i]; + latLng = L.latLng(loc.location.y, loc.location.x); + latLngBounds = L.latLngBounds(L.latLng(loc.extent.ymax, loc.extent.xmax), L.latLng(loc.extent.ymin, loc.extent.xmin)); + results[i] = { + name: loc.address, + bbox: latLngBounds, + center: latLng + }; + } + } + + cb.call(context, results); + }); + }, + + suggest: function(query, cb, context) { + return this.geocode(query, cb, context); + }, + + reverse: function(location, scale, cb, context) { + var params = { + location: encodeURIComponent(location.lng) + ',' + encodeURIComponent(location.lat), + distance: 100, + f: 'json' + }; + + Util.getJSON(this.options.service_url + '/reverseGeocode', params, function(data) { + var results = [], + loc; + + if (data && !data.error) { + loc = L.latLng(data.location.y, data.location.x); + result.push({ + name: data.address.Match_addr, + center: loc, + bounds: L.latLngBounds(loc, loc) + }); + } + + cb.call(context, results); + }); + } + }), + + factory: function(accessToken, options) { + return new L.Control.Geocoder.ArcGis(accessToken, options); + } +}; From 0111a6c834251ac43986ef93fbf2d831e9641404 Mon Sep 17 00:00:00 2001 From: Vasiliy Kuzmenko Date: Wed, 16 Mar 2016 01:08:23 +0500 Subject: [PATCH 2/8] Add ArcGis geocoding service --- src/index.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/index.js b/src/index.js index 0f44746e..efcbbcf6 100644 --- a/src/index.js +++ b/src/index.js @@ -7,7 +7,8 @@ var L = require('leaflet'), What3Words = require('./geocoders/what3words'), Google = require('./geocoders/google'), Photon = require('./geocoders/photon'), - Mapzen = require('./geocoders/mapzen'); + Mapzen = require('./geocoders/mapzen'), + AcrGis = require('./geocoders/acrgis'); module.exports = L.Util.extend(Control.class, { Nominatim: Nominatim.class, @@ -25,7 +26,8 @@ module.exports = L.Util.extend(Control.class, { Photon: Photon.class, photon: Photon.factory, Mapzen: Mapzen.class, - mapzen: Mapzen.factory + mapzen: Mapzen.factory, + arcgis: ArcGis.arcgis }); L.Util.extend(L.Control, { From c97684e2e83344cebdbf091b6c6ac6c91602d488 Mon Sep 17 00:00:00 2001 From: Vasiliy Kuzmenko Date: Wed, 16 Mar 2016 13:41:48 +0500 Subject: [PATCH 3/8] Rename acrgis to arcgis --- src/geocoders/{acrgis => arcgis} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/geocoders/{acrgis => arcgis} (100%) diff --git a/src/geocoders/acrgis b/src/geocoders/arcgis similarity index 100% rename from src/geocoders/acrgis rename to src/geocoders/arcgis From dda324c6340edbf00e6cf909836b1a97d8185565 Mon Sep 17 00:00:00 2001 From: Vasiliy Kuzmenko Date: Wed, 16 Mar 2016 13:43:02 +0500 Subject: [PATCH 4/8] fix typo --- src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.js b/src/index.js index efcbbcf6..da93793f 100644 --- a/src/index.js +++ b/src/index.js @@ -8,7 +8,7 @@ var L = require('leaflet'), Google = require('./geocoders/google'), Photon = require('./geocoders/photon'), Mapzen = require('./geocoders/mapzen'), - AcrGis = require('./geocoders/acrgis'); + ArcGis = require('./geocoders/arcgis'); module.exports = L.Util.extend(Control.class, { Nominatim: Nominatim.class, From da3d72bf9442c76d3825955c865b605692cfaa3c Mon Sep 17 00:00:00 2001 From: Vasiliy Kuzmenko Date: Wed, 16 Mar 2016 13:48:33 +0500 Subject: [PATCH 5/8] add missing ArcGis.class --- src/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/index.js b/src/index.js index da93793f..94bc5591 100644 --- a/src/index.js +++ b/src/index.js @@ -27,7 +27,8 @@ module.exports = L.Util.extend(Control.class, { photon: Photon.factory, Mapzen: Mapzen.class, mapzen: Mapzen.factory, - arcgis: ArcGis.arcgis + ArcGis: ArcGis.class, + arcgis: ArcGis.factory }); L.Util.extend(L.Control, { From 9d9de88f766d578e77c25254a8c6ada6f7b68770 Mon Sep 17 00:00:00 2001 From: Vasiliy Kuzmenko Date: Wed, 16 Mar 2016 13:57:18 +0500 Subject: [PATCH 6/8] Rename arcgis to arcgis.js --- src/geocoders/{arcgis => arcgis.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/geocoders/{arcgis => arcgis.js} (100%) diff --git a/src/geocoders/arcgis b/src/geocoders/arcgis.js similarity index 100% rename from src/geocoders/arcgis rename to src/geocoders/arcgis.js From 811e83f25326dbd0b2a15b364ad9748c2892d446 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D1=81=D0=B8=D0=BB=D0=B8=D0=B9?= Date: Wed, 16 Mar 2016 14:17:45 +0500 Subject: [PATCH 7/8] fix code --- src/geocoders/arcgis.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/geocoders/arcgis.js b/src/geocoders/arcgis.js index 0e9a1745..0f586ebf 100644 --- a/src/geocoders/arcgis.js +++ b/src/geocoders/arcgis.js @@ -31,7 +31,7 @@ module.exports = { latLng, latLngBounds; - if (data.candidates && data.candidates.length { + if (data.candidates && data.candidates.length) { for (var i = 0; i <= data.candidates.length - 1; i++) { loc = data.candidates[i]; latLng = L.latLng(loc.location.y, loc.location.x); @@ -60,7 +60,7 @@ module.exports = { }; Util.getJSON(this.options.service_url + '/reverseGeocode', params, function(data) { - var results = [], + var result = [], loc; if (data && !data.error) { @@ -72,7 +72,7 @@ module.exports = { }); } - cb.call(context, results); + cb.call(context, result); }); } }), From 16959d96ae5a1ec01509f5b74fecc812ed85eb11 Mon Sep 17 00:00:00 2001 From: Vasiliy Kuzmenko Date: Wed, 16 Mar 2016 01:08:23 +0500 Subject: [PATCH 8/8] Add ArcGis geocoding service --- src/geocoders/{acrgis => arcgis.js} | 6 +++--- src/index.js | 7 +++++-- 2 files changed, 8 insertions(+), 5 deletions(-) rename src/geocoders/{acrgis => arcgis.js} (94%) diff --git a/src/geocoders/acrgis b/src/geocoders/arcgis.js similarity index 94% rename from src/geocoders/acrgis rename to src/geocoders/arcgis.js index 0e9a1745..0f586ebf 100644 --- a/src/geocoders/acrgis +++ b/src/geocoders/arcgis.js @@ -31,7 +31,7 @@ module.exports = { latLng, latLngBounds; - if (data.candidates && data.candidates.length { + if (data.candidates && data.candidates.length) { for (var i = 0; i <= data.candidates.length - 1; i++) { loc = data.candidates[i]; latLng = L.latLng(loc.location.y, loc.location.x); @@ -60,7 +60,7 @@ module.exports = { }; Util.getJSON(this.options.service_url + '/reverseGeocode', params, function(data) { - var results = [], + var result = [], loc; if (data && !data.error) { @@ -72,7 +72,7 @@ module.exports = { }); } - cb.call(context, results); + cb.call(context, result); }); } }), diff --git a/src/index.js b/src/index.js index 0f44746e..94bc5591 100644 --- a/src/index.js +++ b/src/index.js @@ -7,7 +7,8 @@ var L = require('leaflet'), What3Words = require('./geocoders/what3words'), Google = require('./geocoders/google'), Photon = require('./geocoders/photon'), - Mapzen = require('./geocoders/mapzen'); + Mapzen = require('./geocoders/mapzen'), + ArcGis = require('./geocoders/arcgis'); module.exports = L.Util.extend(Control.class, { Nominatim: Nominatim.class, @@ -25,7 +26,9 @@ module.exports = L.Util.extend(Control.class, { Photon: Photon.class, photon: Photon.factory, Mapzen: Mapzen.class, - mapzen: Mapzen.factory + mapzen: Mapzen.factory, + ArcGis: ArcGis.class, + arcgis: ArcGis.factory }); L.Util.extend(L.Control, {