Set Zoom Level of Map to particular Zip Code - mapquest

I am using MapQuest JS batch API to plot multiple address on the map. I am able to pass multiple address & plot pins accordingly. I following example on below link. The map may have multiple pins plotted all over USA, I want to set the zoom level of the map, conditionally to particular zip code.
https://developer.mapquest.com/documentation/samples/geocoding/v1/batch/
Currently the zoom level is set to best Fit
var options = {
elt: "map",
zoom: 10,
mtype: 'map'
};
var map = new MQA.TileMap(options);
map.bestFit();
I am expecting to set zoom level to specific zip code based on certain criteria.
Updates: 01/20
On the below link, there is a option to set initial center of the map to particular latitude/longitude. but this did not work for me
https://developer.mapquest.com/docs/api-reference/javascript-api/classes/MQA.TileMap.html
Option:
[latLng] MQA.LatLng optional
the initial map center as a MQA.LatLng Default: {lat: 38.134557, lng: -98.4375}

Hopefully, both the map center and zip code questions have been addressed in the MapQuest developer forum post.
https://developer.mapquest.com/forum/how-set-zoom-level-particular-zip-code

Related

Setting the CRS for non-geographical svg map

I'm trying to show a custom non-geographical map with CRS.simple as explained here:
In a CRS.Simple, one horizontal map unit is mapped to one horizontal
pixel, and idem with vertical
However, I wish to use an SVG vector image as an overlay, but I don't get how the map unit is decided in this case, since the vector images don't really have a resolution?
Also, how could set the CRS origin's location to a specific point?
Thanks for helping

how to draw path between two location in using map box?

I want to draw path between two points. I am using flutter_map 0.10.1+1 package to include map.
I am getting points between two locations using map box api. When I draw Polyline using that points it draws straight line, instead of drawing line on road.
For example I am getting following points when I try to get points between two location:
LatLng(latitude:21.202751, longitude:72.838807)
LatLng(latitude:21.198725, longitude:72.836119)
LatLng(latitude:21.196459, longitude:72.83742)
LatLng(latitude:21.195418, longitude:72.836605)
LatLng(latitude:21.195194, longitude:72.836577)
LatLng(latitude:21.189253, longitude:72.832431)
LatLng(latitude:21.186454, longitude:72.829726)
checkout following image how I am able to draw line.
You need to specify the polylines mode type in the package you use.
GoogleMapPolyline googleMapPolyline =
new GoogleMapPolyline(apiKey: "yourkeyhere");
googleMapPolyline.getCoordinatesWithLocation(
origin: LatLng(40.6782, -73.9442),
destination: LatLng(40.6944, -73.9212),
mode: RouteMode.driving);--->You need to set the mode type

Filtering polygons based on text input in mapbox

I'm trying to work out a variation on the mapbox code provided in this tutorial here: https://docs.mapbox.com/mapbox-gl-js/example/filter-markers-by-input/
But instead of filtering individual points, I'm trying to figure out how to filter polygons from a GeoJSON that have names appended based on an integer feature. Basically, I want to be able to enter the appended name of a polygon into a text box and have the map filter to just that polygon. I'm having difficulty identifying which parts of the code in the example to isolate and graft over. Has anyone tried something like this before?
When you say "filter to just that polygon", I think what you mean (in geospatial terms) is "filter to show only points within that polygon".
You will want to use Turf's "booleanWithin" function.
You will want to change this code:
layerIDs.forEach(function(layerID) {
map.setLayoutProperty(layerID, 'visibility',
layerID.indexOf(value) > -1 ? 'visible' : 'none');
});
You will have to iterate over the points themselves (not just their IDs), and use the booleanWithin function to check whether the point is within the polygon that you have somewhere else loaded.

Place a marker in each country with mapbox

I am using Mapbox to build a multiple choropleth map.
Something along the lines of this example, https://www.mapbox.com/mapbox.js/example/v1.0.0/choropleth-joined-data-multiple-variables/
I am using countries instead of US states however.
I've got the map working and I can switch between layers
I have an extra requirement however to add a marker in each country that displays how many projects are active in that country.
I found out how I can add custom markers to the map with this example, https://www.mapbox.com/mapbox.js/example/v1.0.0/divicon/
The problem is I need to put a marker in the center of each country.
Does anybody know a way to put a marker in the middle of each country?
I tried to use the natural earth admin 0 label points data but that has multiple points per country. It looked like the 'scalerank=0' points were the middle of the countries but if I filter on these points, I still get multiple points for some countries (russia has 4 for instance, but Belgium has 4 as well).
If you plot all scalerank 0 points on a map you get the following result:
https://a.tiles.mapbox.com/v4/persyval.jg5p7gm7/page.html?access_token=pk.eyJ1IjoicGVyc3l2YWwiLCJhIjoiX3lrSTNYYyJ9.6Ps4OlBCYmlkxQksKsGb7A#6/45.159/12.206
Does anybody know about a dataset that has one point per country or another way to put a marker in the center of each country with mapbox?
It seems it's hard to find a list of country points for the placing of markers.
So I took the mentioned admin labal 0 points and tried to sanitize it to have only one appropiate marker per country.
The result can be downloaded here in GEOJSON format:
https://drive.google.com/file/d/0B6IQhfb-UYeUYk1mcUZaMmV0S1U/edit?usp=sharing
If you want to have a visual representation of the points take a look at this map:
https://a.tiles.mapbox.com/v4/persyval.jgk4767c/page.html?access_token=pk.eyJ1IjoicGVyc3l2YWwiLCJhIjoiX3lrSTNYYyJ9.6Ps4OlBCYmlkxQksKsGb7A#4/36.49/34.32
I needed this points for a proof of concept project so I haven't checked all markers meticulously, I also haven't taken account some of the more political sensitive country borders.
If you have a project in which this is of importance please check the file before using, but the points in this file can be easily edited to your own preferences.

hide and show a polyline in leaflet?

I'm using leaflet for show raw itinerary to go to some markers.
I'm showing my itinerary with a leaflet polyline.
But I would like to be able to
How to hide and show a polyline in leaflet ?
I can do this :
$('.leaflet-overlay-pane').hide();
and
$('.leaflet-overlay-pane').show();
But this will show and hide all my polyline.
I would like to be able to hide and show them separately.
Thanks.
If you have a reference to the polyline
var polyline = L.polyline(...);
Then you can use
map.addLayer(polyline);//For show
map.removeLayer(polyline);// For hide
at the moment I think there is no native method to only hide/show, maybe in the 0.7 version
Other solution is to access to the object container, in a old commet from the maintainer
I don't think there's an easy solution, for tile layers at least. :( I'll try to handle this sooner.
For vectors, you can change path._container.style.display, and for markers - marker._image.style.display and marker._shadow.style.display.
Removing and adding objects on the map will also change the order of the layers (if you have more than one in your legend). The added objects will always be on top and not in the original order. I use setLatLng (markers) and setLatLngs (polylines and polygons) to do a quick trick without changing the order. Just change the latLngs to e.g.(1000,1000) outside your view.
var myLatLng0 = L.latLng(1000,1000);
var myObject = L.marker(myLatLng,{....});
myObject.latlng = myLatLng;
or
var myObject = L.polygon(myPath,{....});
myObject.path = myPath;
Hide / Show marker:
myObject.setLatLng(myLatLng0);
myObject.setLatLng(myObject.latlng);
Hide / Show polyline or polygon:
myObject.setLatLngs(myLatLng0);
myObject.setLatLngs(myObject.path);
Note: hiding polylines and polygons will also work with setLatLngs(false). setLatLng(false) for markers will give an error.