this is not related to Qlik, rather where to get geodata for your app.
It looks, like you can find what you are looking for here https://data.gov.uk/dataset/counties-and-unitary-authorities-december-2015-full-extent-boundaries-in-england-and-wales
Alternatively you can try Mapbox or ArcGIS and download vector maps from there (needs some dev experience)
Though I would suggest to stay away from KML and move to point maps. Just my 2 cents, though.
Again, i would suggest to use point maps.
There are really beautiful extensions on branch.
With CartoDB you can add time dimension to election results.
With Google maps you can use clustering, custom markers and HTML popups.
And Mapbox webgl based extension is simply beauty in itself...
If you need the QS app to geocode your data (get lats and longs) - let me know. It takes csv with any addresses (even messy ones) and clears it thru Google Maps API.
You can use the app in Qlik directly (then Google will be the provider of coordinates), or you can google the Geo Python library (then you can choose from many providers, including Mapbox, which is used by Qlik itself to geocode the data).
Getting coords _seems_ like some overhead over what you can do with kml or with geocoding, embedded in Tableau.
But in reality, when you have Moscow, Moskow, Moskva, Moskwa, Mooskva in your dataset and you need to normalize it, you will certainly appreciate the combined power of Google and Qlik
If this helpful, would appreciate the like or "helpful" answer. Thanks.
Put the code in new or existing app.
Create vFile and vKey expressions.
//Populate temporary table with distinct address values
//These can be postcodes, street addresses or city names
//**Be careful of ambiguous address information as if unsure, Google will guess**
// create expression vFile - and add full path to csv file with addresses. Header is Address.
// create expression vKey and paste your Google API, which is enabled for Maps.
Address as tmpAddress
(txt, codepage is 1252, embedded labels, delimiter is ';', msq);
//Loop through address values, polling Google Maps for latitude and longitude info
for vRow = 0 to NoOfRows('tmp') -1
let vAddress = peek('tmpAddress', vRow, 'tmp');
//Latest API call update 02/03/2016
'$(vAddress)' as Address,
[result/type] as type,
[result/formatted_address] as formatted_address,
[result/place_id] as place_id,
[result/geometry/location_type] as location_type,
[result/geometry/viewport/northeast/lat] as [northeast/lat],
[result/geometry/viewport/northeast/lng] as [northeast/lng],
[result/geometry/viewport/southwest/lat] as [southwest/lat],
[result/geometry/viewport/southwest/lng] as [southwest/lng],
[result/geometry/location/lat] as [location/lat],
[result/geometry/location/lng] as [location/lng]
FROM [https://maps.googleapis.com/maps/api/geocode/xml?address=$(vAddress)&key=$(vKey)] (XmlSimple, Table is [GeocodeResponse]);
//Drop temporary table
DROP Table tmp;